Requêtes dans LINQ to Entities
Une requête est une expression qui récupère des données à partir d'une source de données. En général, les requêtes sont exprimées dans un langage de requête spécialisé, tel que SQL pour les bases de données relationnelles et Xquery pour XML. Par conséquent, les développeurs ont donc dû apprendre un nouveau langage de requête pour chaque type de source de données ou format de données qu'ils interrogent. LINQ (Language-Integrated Query) propose un modèle cohérent plus simple qui permet d'utiliser des données de types de sources et de formats divers. Dans une requête LINQ, vous travaillez toujours avec des objets de programmation.
Une opération de requête LINQ se compose de trois actions : obtenir la ou les sources de données, créer la requête, puis exécuter cette dernière.
Les sources de données qui implémentent l'interface générique IEnumerable ou l'interface générique IQueryable peuvent être interrogées via LINQ. Les instances de la classe générique ObjectQuery, laquelle implémente l'interface générique IQueryable, servent de source de données pour les requêtes LINQ to Entities . La classe générique ObjectQuery représente une requête qui retourne une collection de zéro, un ou plusieurs objets typés. Vous pouvez également laisser le compilateur déduire le type d'une entité en utilisant le mot clé C# var (Dim en Visual Basic).
Dans la requête, vous spécifiez exactement les informations que vous voulez extraire de la source de données. Une requête peut également spécifier la manière dont ces informations doivent être triées, regroupées et mises en forme avant d'être retournées. Dans LINQ, une requête est stockée dans une variable. Si la requête retourne une séquence de valeurs, la variable de requête doit elle-même être de type requêtable. Cette variable de requête n'effectue aucune action et ne retourne aucune donnée ; elle stocke uniquement les informations de requête. Une fois que vous avez créé une requête, vous devez l'exécuter pour extraire des données.
Syntaxe de requête
Les requêtes LINQ to Entities peuvent être composées dans deux syntaxes différentes : la syntaxe d'expression de requête et la syntaxe de requête fondée sur une méthode. La syntaxe d'expression de requête est une caractéristique nouvelle dans C# 3.0 et Visual Basic 9.0. Elle est constituée d'un ensemble de clauses écrites dans une syntaxe déclarative similaire à Transact-SQL ou XQuery. Toutefois, le Common Language Runtime (CLR) du .NET Framework ne peut pas lire la syntaxe d'expression de requête proprement dite. Par conséquent, au moment de la compilation, les expressions de requête sont traduites en appels de méthodes pour que le CLR puisse les comprendre. Ces méthodes sont appelées opérateurs de requête standard. En tant que développeur, vous pouvez les appeler directement en utilisant la syntaxe de méthode plutôt que la syntaxe de requête. Pour plus d'informations, voir Query Syntax versus Method Syntax.
Syntaxe d'expression de requête
Les expressions de requête utilisent une syntaxe de requête déclarative. Cette syntaxe permet au développeur d'écrire des requêtes dans un langage de haut niveau formaté de façon similaire à Transact-SQL. En utilisant la syntaxe d'expression de requête, vous pouvez même effectuer un filtrage, un classement et des opérations de regroupement complexes sur les sources de données avec un minimum de code. Pour plus d'informations, consultez Basic Query Operators. Pour obtenir des exemples d'utilisation de la syntaxe d'expression de requête, consultez les rubriques suivantes :
Exemples de syntaxe d'expression de requête : projection (LINQ to Entities)
Exemples de syntaxe d'expression de requête : filtrage (LINQ to Entities)
Exemples de syntaxe d'expression de requête : classement (LINQ to Entities)
Exemples de syntaxe d'expression de requête : opérateurs d'agrégation (LINQ to Entities)
Exemples de syntaxe d'expression de requête : partitionnement (LINQ to Entities)
Exemples de syntaxe d'expression de requête : opérateurs de jointure (LINQ to Entities)
Exemples de syntaxe d'expression de requête : opérateurs d'éléments (LINQ to Entities)
Exemples de syntaxe d'expression de requête : regroupement (LINQ to Entities)
Exemples de syntaxe d'expression de requête : exploration de relations (LINQ to Entities)
Exemples de syntaxe de requête fondée sur une méthode
Une autre manière de composer des requêtes LINQ to Entities consiste à utiliser des requêtes fondées sur une méthode. La syntaxe de requête fondée sur une méthode est une séquence d'appels directs de méthodes d'opérateur LINQ passant des expressions lambda comme paramètres. Pour plus d'informations, consultez Lambda Expressions. Pour obtenir des exemples d'utilisation de la syntaxe fondée sur une méthode, consultez les rubriques suivantes :
Exemples de syntaxe de requête fondée sur une méthode : projection (LINQ to Entities)
Exemples de syntaxe de requête fondée sur une méthode : filtrage (LINQ to Entities)
Exemples de syntaxe de requête fondée sur une méthode : classement (LINQ to Entities)
Exemples de syntaxe de requête fondée sur une méthode : opérateurs d'agrégation (LINQ to Entities)
Exemples de syntaxe de requête fondée sur une méthode : partitionnement (LINQ to Entities)
Exemples de syntaxe de requête fondée sur une méthode : conversion (LINQ to Entities)
Exemples de syntaxe de requête fondée sur une méthode : opérateurs de jointure (LINQ to Entities)
Exemples de syntaxe de requête fondée sur une méthode : opérateurs d'élément (LINQ to Entities)
Exemples de syntaxe de requête fondée sur une méthode : regroupement (LINQ to Entities)
Exemples de syntaxe de requête fondée sur une méthode : exploration de relations (LINQ to Entities)
Voir aussi
Concepts
Autres ressources
Getting Started with LINQ in C#
Getting Started with LINQ in Visual Basic