LINQ permette di effettuare ricerche molto simili a quelle che si fanno su basi dati SQL. In quest'ottica una funzionalità molto importante è la possibilità di raggruppare gli oggetti con una clausola simile alla Group By SQL.
Grazie a questa caratteristica, si può creare un albero di oggetti dove una proprietà è il campo in base al quale si raggruppa ed un'altra è una lista degli oggetti che corrispondono alla chiave.
In questo esempio, viene effettuata una query su una lista di persone e ne viene restituita un'altra che contiene come chiave l'età e come lista corrispondente le persone che hanno quell'età.
System.Collections.Generic.List<Persona> persone = new System.Collections.Generic.List<Persona>{ new Persona { Nome = "Stefano", Cognome = "Mostarda", Eta = 28, Citta="Roma", DataNascita=new DateTime(1979, 04, 11), Indirizzo="Via " }, new Persona { Nome = "Daniele", Cognome = "Bochicchio", Eta = 28, Citta = "Vulture", DataNascita = new DateTime(1979, 10, 20), Indirizzo = "Via " }, new Persona { Nome = "Riccardo", Cognome = "Golia", Eta = 35, Citta = "Padova", DataNascita = new DateTime(1974, 10, 20), Indirizzo = "Via " }, new Persona { Nome = "Cristian", Cognome = "Civera", Eta = 25, Citta = "Brescia", DataNascita = new DateTime(1981, 10, 20), Indirizzo = "Via " }, new Persona { Nome = "Marco", Cognome = "Leoncini", Eta = 35, Citta = "Empoli", DataNascita = new DateTime(1975, 9, 1), Indirizzo = "Via " } }; var q = persone.GroupBy(pe => pe.Eta, pe => pe).AsQueryable();
Per approfondimenti si veda:
Introduzione a LINQ
https://www.winfxitalia.com/articoli/netfx3.5/linq.aspx
Eseguire query con LINQ
https://www.winfxitalia.com/script/14/Eseguire-Query-LINQ.aspx
Anonymous Type con LINQ
https://www.winfxitalia.com/script/16/Anonymous-Type-LINQ.aspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Change tracking e composition in Entity Framework
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi