LINQ

Da Teknopedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

Language Integrated Query (LINQ, si pronuncia "link") è un componente del .NET Framework di Microsoft che aggiunge funzionalità di interrogazione ai linguaggi .NET utilizzando una sintassi simile a SQL. LINQ è stato distribuito come componente del .NET Framework 3.5 il 19 novembre 2007.

LINQ estende il linguaggio con l'aggiunta di query expression, simili a dichiarazioni SQL, che possono essere utilizzate per estrarre e processare dati da array, classi enumerabili, documenti XML, database relazionali e sorgenti dati di terze parti.

Segue un breve esempio sull'uso di LINQ scritto in C#:

 int SomeValue = 5; 
 var results =  from c in SomeCollection
                let x = SomeValue * 2
                where c.SomeProperty < x
                select new {c.SomeProperty, c.OtherProperty};
 foreach (var result in results)
         Console.WriteLine(result);

Standard Query Operator

[modifica | modifica wikitesto]

LINQ definisce parole riservate e metodi che prendono il nome di Standard Query Operator. Le parole riservate vengono tradotte dal compilatore nelle chiamate ai metodi equivalenti. Per i metodi che non hanno una parola riservata equivalente, si utilizza la sintassi del metodo.

Language extensions

[modifica | modifica wikitesto]

LINQ definisce diverse estensioni di linguaggio che forniscono zucchero sintattico per la scrittura di query.

Di seguito le principali estensioni.

Un linguaggio è libero di scegliere una sintassi per le query che verrà riconosciuto nativamente. Queste parole chiave del linguaggio devono essere tradotte dal compilatore in chiamate ai metodi LINQ appropriati.

Variabili con tipizzazione implicita

[modifica | modifica wikitesto]

Questa estensione consente di dichiarare variabili senza specificarne i tipi. I linguaggi C# 3.0 e Oxygene le dichiarano con la parola chiave var. In VB9.0, la parola chiave Dim senza dichiarazione del tipo ha lo stesso scopo. Tali oggetti rimangono comunque fortemente tipizzati; per questi oggetti, il compilatore deduce i tipi delle variabili tramite inferenza dei tipi, il che consente di specificare e definire i risultati delle query senza dichiarare il tipo delle variabili intermedie.

I tipi anonimi offrono un modo pratico per incapsulare un set di proprietà di sola lettura in un singolo oggetto, senza dover definire prima un tipo in modo esplicito. Questo è utile per gli operatori Select e Join, i cui tipi di risultato possono differire dai tipi degli oggetti originali. Il compilatore utilizza l'inferenza dei tipi per determinare i campi contenuti nelle classi e genera accessori e mutatori per questi campi.

Inizializzatori di oggetti

[modifica | modifica wikitesto]

Gli inizializzatori di oggetti permettono di creare e inizializzare un oggetto in un unico ambito, come richiesto dagli operatori Select e Join.

Espressioni lambda

[modifica | modifica wikitesto]

Le espressioni lambda consentono di scrivere predicati e altre funzioni di proiezione inline con una sintassi concisa e supportano la chiusura lessicale completa.


Voci correlate

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
  Portale Microsoft: accedi alle voci di Teknopedia che trattano di Microsoft