Linq non è altro che un'estensione del linguaggio che permette di eseguire query verso una determinata risorsa. La risorsa può essere un file XML, un database o una collection di classi e nonostante questo, la sintassi Linq rimane la stessa.
Scrivere una query per cercare all'interno di un grafo di oggetti è sicuramente più semplice che ciclare gli elementi uno ad uno, alla ricerca di quelli che rispettino tali caratteristiche (LinqToObjects).
Scrivere una query con Linq, piuttosto che utilizzare XPath, per ritrovare dati in formato XML, è molto più semplice e veloce dal punto di vista dello sviluppo e della leggibilità del codice (LinqToXml).
Come detto in precedenza, utilizzando Linq si possono eseguire query verso una struttura di oggetti. Per dimostrare la potenza di questa tecnologia si pensi ad una lista di oggetti di tipo Persona.
public class Persona{
public string Nome { get; set; }
public string Cognome { get; set; }
public int Eta { get; set; }
public string Citta { get; set; }
}
Notare la sintassi semplificata delle proprietà che sfrutta le automatic properties.
Si supponga di voler ricercare tutte le persone che abbiano compiuto la maggiore età.
List<Persona> persone = new List<Persona> {
new Persona { Nome="Stefano", Cognome="Mostarda", Eta=14, Citta="Roma"},
new Persona { Nome="Riccardo", Cognome="Golia", Eta=35, Citta="Padova"},
new Persona { Nome="Cristian", Cognome="Civera", Eta=25, Citta="Brescia"},
new Persona { Nome="Christian", Cognome="Paparelli", Eta=31, Citta="Roma"},
};
var result = from p in persone
where p.Eta > 17
select p;
GridView1.DataSource = result;
GridView1.DataBind();
Come si può osservare dal codice, sono state utilizzate alcune feature del .NET Framework 3.5 come gli Array e gli Object Initializers. Anche se non fanno parte delle novità introdotte appositamente per supportare Linq, questo è un esempio di come rendano comumque il codice più semplice da scrivere.