Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Mise à jour : novembre 2007
Les applications utilisent très souvent des données dans des bases de données SQL ou des documents XML. Auparavant, les développeurs devaient apprendre un langage de programmation principal, tel que C#, et un langage secondaire, tel que SQL ou XQuery. LINQ (Language Integrated Query) permet d'effectuer des requêtes directement en langage C#. Au lieu d'apprendre un langage de requête distinct, vous pouvez désormais utiliser vos connaissances en C#, ainsi que quelques mots clés et concepts, pour interroger des bases de données SQL, des groupes de données ADO.NET, des documents XML et des classes de collection .NET qui implémentent l'interface IEnumerable.
Avantages de l'utilisation de LINQ
Syntaxe familière pour écrire des requêtes.
Contrôle des erreurs de syntaxe et de cohérence des types à la compilation.
Prise en charge améliorée du débogueur.
Prise en charge d'IntelliSense.
Possibilité d'utiliser directement des éléments XML au lieu de créer un document XML conteneur, comme l'exige le DOM W3C.
Fonction puissante de modification de documents XML en mémoire, mais plus simple d'utilisation que XPath ou XQuery.
Fonctions puissantes de filtrage, de classement et de regroupement.
Modèle cohérent pour l'utilisation de données de sources et formats divers.
Améliorations du langage C# prenant en charge LINQ
Les nouvelles structures de langage suivantes ont été ajoutées à C# 3.0 pour la prise en charge de LINQ :
Structure de langage |
Description |
|---|---|
Expressions de requête |
Syntaxe de requête déclarative utilisée pour interroger des données de toute source de données compatible avec LINQ. Pour plus d'informations, consultez Expressions de requête LINQ (Guide de programmation C#) et Fonctionnalités C# 3.0 prenant en charge LINQ. |
Variables implicitement typées |
Variable spécifiée avec le modificateur var qui permet au compilateur de déduire le type de la variable. Pour plus d'informations, consultez Variables locales implicitement typées (Guide de programmation C#) et Fonctionnalités C# 3.0 prenant en charge LINQ. |
Initialiseurs d'objets |
Permet d'initialiser des objets sans appeler explicitement leur constructeur. Pour plus d'informations, consultez Initialiseurs d'objets et de collection (Guide de programmation C#) et Fonctionnalités C# 3.0 prenant en charge LINQ. |
Types anonymes |
Permet au compilateur de créer des objets sans spécifier de type de données nommé. Le nom du type est disponible uniquement pour le compilateur. Pour plus d'informations, consultez Types anonymes (Guide de programmation C#) et Fonctionnalités C# 3.0 prenant en charge LINQ. |
Méthodes d'extension |
Permet d'étendre un type existant en y associant des méthodes statiques. Pour plus d'informations, consultez Fonctionnalités C# 3.0 prenant en charge LINQ. |
Expressions lambda |
Expression ou bloc d'instructions en ligne qui peut être utilisé lorsqu'un type délégué est attendu. Pour plus d'informations, consultez Expressions lambda (Guide de programmation C#) et Fonctionnalités C# 3.0 prenant en charge LINQ. |
Écriture de requêtes LINQ
Que vous utilisiez des groupes de données ADO.NET, des bases de données SQL, des collections .NET ou des documents XML, la structure de base d'une expression de requête LINQ est identique. Une expression de requête commence par une clause from, suivie de clauses de requête telles que where, orderby, select, etc. L'expression complète est stockée dans une variable de requête qui peut être exécutée ou modifiée sans limite. La syntaxe des expressions de requête est similaire à celle de SQL. Par exemple, vous pouvez écrire une requête LINQ qui retourne tous les étudiants d'une base de données students dont la matière principale est science en utilisant la syntaxe suivante :
IEnumerable<Student> studentQuery =
from student in studentApp.students
where student.Major == "Science"
select student;
Pour en savoir plus sur les expressions de requête, consultez Opérations de requête de base (LINQ), Introduction aux requêtes LINQ et Procédure pas à pas : écriture de requêtes en C# (LINQ).
LINQ to Objects
L'expression LINQ to Objects fait référence à l'utilisation de LINQ pour interroger des collections de données en mémoire telles que les classes des espaces de noms System.Collections et System.Collections.Generic. Ces classes incluent notamment ArrayList, List<T>, Dictionary<K,T>, etc. Vous pouvez interroger des tableaux, car ils prennent en charge implicitement IEnumerable<T>. Pour plus d'informations, consultez LINQ to Objects.
Vous pouvez également importer un fichier texte dans des structures de données énumérables et exécuter des requêtes pour filtrer ou trier son contenu. Pour obtenir un exemple, consultez Comment : compter les occurrences d'un mot dans une chaîne (LINQ).
LINQ to SQL
Utilisez LINQ to SQL pour accéder à des bases de données SQL Server et SQL Server Express via une couche d'objet fortement typée créée à l'aide du Concepteur O/R.
Vous pouvez utiliser le Concepteur O/R pour mapper des classes LINQ to SQL aux tables d'une base de données, puis écrire des requêtes LINQ pour lier des données aux contrôles dans votre application. Par exemple, la requête LINQ suivante lie les résultats d'une requête LINQ (tous les clients des États-Unis) à une source de liaison d'un contrôle DataGridView.
var CustomersQuery = from customers in northwindSampleDataContext1.Customers
where customers.Country == "US"
select customers;
customerBindingSource.DataSource = CustomersQuery;
Pour plus d'informations, consultez LINQ to SQL, Vue d'ensemble du Concepteur O/R, Procédure pas à pas : création de classes LINQ to SQL (Concepteur O/R) et Procédure : ajouter des classes LINQ to SQL à un projet (Concepteur O/R).
Remarque : |
|---|
Actuellement, le Concepteur O/R ne prend pas en charge les bases de données SQL Server Compact 3.5. Pour plus d'informations sur l'obtention de SQL Server Express Edition, consultez la section « Obtention de SQL Server Express Edition » dans Comment : installer des exemples de bases de données. |
LINQ to DataSet
Le DataSet est utilisé pour lier des données à des contrôles dans une application. Au lieu d'établir directement une connexion avec la base de données, le DataSet permet à une application d'utiliser des données hors connexion (en cache) ou des sous-ensembles de plusieurs sources de données. Lorsque l'application est mise en ligne, les modifications du DataSet peuvent être mises à jour dans la base de données.
LINQ to Dataset facilite et accélère l'interrogation des données mises en cache par rapport aux méthodes de filtrage et de tri accessibles à un DataSet. Pour plus d'informations, consultez LINQ to DataSet.
LINQ to XML
LINQ to XML vous permet de créer et de modifier facilement des documents XML en utilisant des expressions de requête LINQ plutôt que XPath ou XQuery. LINQ to XML est une nouvelle API de programmation XML en mémoire qui utilise des constructions de programmation modernes au lieu du DOM (Document Object Model) W3C. Pour plus d'informations, consultez Comparaison de LINQ to XML et DOM, LINQ to XML et Vue d'ensemble des classes LINQ to XML.
Remarque :