#16 - Anonymous Type con LINQ

Una delle nuove feature introdotte con C# 3.0 e VB 9 è la possibilità di creare dei tipi direttamente nel corpo di un metodo. LINQ sfrutta appieno questa caratteristica dando la possibilità di restituire non l'oggetto interrogato, ma uno creato al volo.

Questa caratteristica da' la possibilità di risparmiare carico quando si utilizza LINQ verso basi dati, in quanto permette di ritornare solamente alcuni campi e non tutta la tabella interrogata.

In questo esempio viene effettuata una query su una lista di persone e ne viene restituita un'altra (filtrata con le persone che hanno più di 30 anni) che contiene un oggetto con la sola proprietà NomeCompleto, che include il nome ed il cognome.

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 = "Daniel", 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 = 32, Citta = "Empoli", DataNascita = new DateTime(1975, 9, 1), Indirizzo = "Via " }
};
var q = from p in persone where p.Eta > 30 select new { NomeCompleto = p.Nome + " " + p.Cognome };

Per approfondimenti si veda:

Introduzione a LINQ
http://www.winfxitalia.com/articoli/netfx3.5/linq.aspx

#14 - Eseguire query con LINQ
http://www.winfxitalia.com/script/14/Eseguire-Query-LINQ.aspx

Nota: Questo script contiene un allegato.


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

Per inserire un commento, devi registrarti alla nostra community.





IN EVIDENZA
MISC