posts - 315, comments - 268, trackbacks - 15

My Links

News

View Pietro Libro's profile on LinkedIn

DomusDotNet
   DomusDotNet

Pietro Libro

Tag Cloud

Article Categories

Archives

Post Categories

Blogs amici

Links

Linq: Operatore Group By

Supponiamo di avere tre classi rappresentanti una ipotetica basi di dati "Università" (molto semplice). Una classe rappresentante lo studente, un classe rappresentante un esame sostenuto dallo studente ed una classe rappresentante l'associazione tra studenti ed esami sostenuti. Utilizzando un ClassDiagram avremmo qualcosa di simile a:

image

Supponiamo ora, di voler recuperare, una volta popolate le collezione di oggetti opportune, quali esami siano stati sostenuti dagli studenti e con quale votazione, utilizzando LINQ e l'operatore di Group By.

Possiamo scrivere del codice del tipo:

1 var queryEsamiSostenutiDaStudenti = 2 from s in studenti 3 join es in esamiSostenuti on s.ID_Studente equals es.ID_Studente 4 join esa in esami on es.ID_Esame equals esa.ID_Esame 5 select new { s.Cognome, s.Matricola, esa.Nome, esa.Descrizione, es.Voto, es.Lode }; 6 //Esegue il GroupBy per cognome 7 var groupEsamiPerStudente = 8 from eSost in queryEsamiSostenutiDaStudenti 9 orderby eSost.Cognome ascending 10 group eSost by eSost.Cognome; 11 //Visualizza il risultato ottenuto 12 foreach (var groupEsamiStudente in groupEsamiPerStudente) 13 { 14 Console.WriteLine("----------------------------------------------------------"); 15 Console.WriteLine("Lo studente {0} ha sostenuto i seguenti esami con profitto", groupEsamiStudente.Key); 16 foreach (var item in groupEsamiStudente) 17 { 18 Console.WriteLine("\t{0}, {1} {2} {3}", new object[]{ 19 item.Nome , item.Descrizione , 20 item.Voto,item.Lode ? "Con lode" : "Senza lode"} 21 ); 22 } 23 Console.WriteLine("----------------------------------------------------------"); 24 } 25

Utilizzando due cicli foreach riusciamo da ottenere un effetto del tipo:

image

Codice esempio

Technorati Tag: ,

Print | posted on venerdì 9 maggio 2008 11:28 | Filed Under [ LINQ ]

Feedback

Gravatar

# Linq: ThenBy e ThenByDescending

Linq: ThenBy e ThenByDescending
16/05/2008 13:53 | Il blog di Pietro Libro
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET