Qu'est-ce qu'une requête intégrée au langage?
La requête en langage intégré (LINQ) permet d’intégrer de manière transparente la syntaxe de requête déclarative dans les langages impératifs, principalement C # et VB.NET. Le développement de LINQ a résolu les problèmes rencontrés par les développeurs travaillant dans des environnements orientés objet lors de l'exécution de requêtes. Il a été introduit dans la version 3.5 de Microsoft® .NET Framework en novembre 2007 et dans le nom de code Visual Studio® "Orcas".
Avant la création d'une requête en langage intégré, les langages .NET ne disposaient d'aucun moyen natif d'interroger des bases de données relationnelles ou des documents XML. Les développeurs écrivant dans ces langages devaient incorporer respectivement SQL ou XQuery sous forme de chaînes et mapper manuellement les données résultantes sur des objets .NET. Les chaînes de requête et les mappages incorporés n'ont pas pu être validés par les compilateurs .NET, ce qui a permis de détecter les erreurs potentielles au moment de l'exécution.
Un autre problème rencontré par les développeurs avant l'interrogation intégrée au langage était que les langages .NET n'avaient qu'une syntaxe orientée objet pour interroger des collections d'objets .NET. Généralement, le développeur itère sur une collection source entière, créant de nouvelles collections de résultats basées sur des critères de recherche. Le développeur peut également transformer les données lors de la création des collections de résultats. Cette approche était lourde; une requête de sélection simple écrite en C # ou en VB nécessiterait au moins cinq lignes de code, tandis qu'une même requête nécessiterait une ligne de code dans un langage de requête.
Les défis que pose l'interrogation dans un environnement orienté objet ont donné à Microsoft l'impulsion nécessaire pour créer LINQ. LINQ fournit une syntaxe de requête rappelant celle de SQL à utiliser en ligne avec C # ou VB, avec vérification de type statique. Lorsqu'ils interrogent des collections .NET, au lieu d'utiliser des boucles imbriquées, les développeurs peuvent utiliser la syntaxe LINQ pour sélectionner des éléments et transformer des données. Entre autres avantages, cela se traduit par moins de lignes de code par rapport à une syntaxe purement orientée objet.
Lors de l'accès à des sources de données externes, LINQ et les composants associés éliminent le besoin de langages de requête intégrés et de mappages de données au sein d'un langage .NET lui-même. Pour effectuer le mappage des données, LINQ dépend de composants appelés fournisseurs LINQ. LINQ-to-Objects est le fournisseur de stock qui permet à LINQ d'accéder aux collections .NET. De même, il existe des fournisseurs pour accéder aux bases de données relationnelles et aux documents XML. La plupart de ces fournisseurs sont des composants tiers non inclus dans le .NET Framework. Quel que soit le fournisseur utilisé, toutes les requêtes utilisent la même syntaxe LINQ.
Entre la syntaxe de requête intégrée au langage et les fournisseurs, se trouve une bibliothèque d'opérateurs de requête ajoutés au .NET Framework dans le cadre des fonctions LINQ. Ces opérateurs effectuent des tâches telles que le filtrage, le classement, les opérations de la théorie des ensembles et l'agrégation. Comme ces opérateurs font partie du .NET Framework, ils peuvent également être utilisés sans LINQ si le développeur le souhaite.