Condividi tramite


Query in LINQ to Entities

Una query è un'espressione che recupera dati da un'origine dati. Le query sono in genere espresse in un linguaggio di query specializzato, ad esempio SQL per i database relazionali e XQuery per XML. Gli sviluppatori hanno pertanto dovuto apprendere un nuovo linguaggio di query per ogni tipo di origine dati o formato di dati su cui eseguono query. LINQ (Language-Integrated Query) offre un modello più semplice e coerente per l'utilizzo di dati in diversi tipi di origini dati e formati di dati. In una query LINQ vengono sempre utilizzati oggetti di programmazione.

Un'operazione di query LINQ comporta tre azioni: il recupero di una o più origini dati, la creazione della query e l'esecuzione della query.

È possibile utilizzare LINQ per eseguire query su origini dati che implementano l'interfaccia generica IEnumerable o IQueryable. Le istanze della classe generica ObjectQuery, che implementa l'interfaccia generica IQueryable, fungono da origine dati per le query LINQ to Entities . La classe generica ObjectQuery rappresenta una query che restituisce una raccolta di zero o più oggetti tipizzati. È inoltre possibile consentire al compilatore di dedurre il tipo di un'entità tramite la parola chiave var di C# (Dim in Visual Basic).

Nella query è necessario specificare esattamente le informazioni da recuperare dall'origine dati. Una query può inoltre specificare in che modo ordinare, raggruppare e formattare le informazioni prima che vengano restituite. In LINQ una query viene archiviata in una variabile. Se la query restituisce una sequenza di valori, la variabile di query deve essere un tipo queryable. La variabile di query non esegue azioni né restituisce dati. Viene solo utilizzata per archiviare le informazioni sulla query. Dopo aver creato una query è necessario eseguirla per recuperare eventuali dati.

Sintassi della query

Per la composizione di query LINQ to Entities è possibile utilizzare due diverse sintassi: la sintassi delle espressioni di query e la sintassi delle query basate su metodo. La sintassi delle espressioni di query è una novità di C# 3.0 e Visual Basic 9.0 e consiste in un set di clausole scritte in una sintassi dichiarativa simile a Transact-SQL o a XQuery. Tuttavia, CLR (Common Language Runtime) di .NET Framework non è in grado di leggere da solo la sintassi delle espressioni di query. Pertanto, in fase di compilazione, le espressioni di query vengono convertite in chiamate al metodo in modo da poter essere utilizzate da CLR. Questi metodi sono noti come operatori di query standard. Gli sviluppatori possono scegliere di chiamare direttamente questi metodi utilizzando la relativa sintassi, anziché utilizzare la sintassi delle query. Per ulteriori informazioni, vedere Query Syntax versus Method Syntax.

Sintassi delle espressioni di query

Le espressioni di query vengono scritte in una sintassi di query dichiarativa. Questa sintassi consente a uno sviluppatore di scrivere query in un linguaggio di alto livello formattato in modo simile a Transact-SQL. Con la sintassi delle espressioni di query è possibile eseguire persino complesse operazioni di filtro, ordinamento e raggruppamento su origini dati scrivendo una minima quantità di codice. Per ulteriori informazioni, consultare Basic Query Operators. Per esempi che illustrano come utilizzare la sintassi delle espressioni di query, consultare gli argomenti seguenti:

Sintassi delle query basate su metodo

Per comporre query LINQ to Entities , è inoltre possibile utilizzare query basate su metodo. La sintassi delle query basate su metodo è costituita da una sequenza di chiamate dirette ai metodi dell'operatore LINQ, in cui come parametri vengono passate espressioni lambda. Per ulteriori informazioni, vedere Lambda Expressions. Per esempi che illustrano come utilizzare la sintassi delle query basate su metodo, consultare gli argomenti seguenti:

Vedere anche

Concetti

LINQ to Entities

Altre risorse

Getting Started with LINQ in C#
Getting Started with LINQ in Visual Basic