2009-10-13 8 views
3

Pourquoi la syntaxe LINQ d'Andres Heilsberg a-t-elle été différente de celle de SQL (ce qui a permis aux programmeurs d'apprendre une toute nouvelle chose)?Syntaxe LINQ par rapport à la syntaxe SQL

N'était-ce pas mieux si elle utilisait la même syntaxe que SQL?

Répondre

21

LINQ n'est pas destiné à être SQL. Il s'agit d'un langage de requête aussi indépendant que possible de la source de données. Maintenant, il est vrai qu'il a un biais SQL fort, mais il n'est pas destiné à simplement intégrer SQL dans le code source (heureusement).

Personnellement, je grandement préfèrent la syntaxe de LINQ à SQL. En particulier, la commande est beaucoup plus logique dans LINQ. Juste en regardant l'ordre des clauses de la requête, vous pouvez voir l'ordre logique dans lequel la requête est traitée. Vous commencez avec une source de données, vous effectuez éventuellement un filtrage, une commande, etc. et vous terminez généralement par une projection ou un regroupement. Comparez cela avec SQL, où vous commencez à dire quelles sont les colonnes qui vous intéressent, sans même savoir de quelle table vous parlez. Non seulement LINQ est plus logique à cet égard, mais il permet aux outils de mieux fonctionner avec vous - si Visual Studio sait de quelles données vous disposez, alors quand vous commencez à écrire une clause select (par exemple) vous aider avec IntelliSense. En outre, il permet à la traduction des expressions de requête LINQ en "notation par points" d'être relativement simple en utilisant des méthodes d'extension, sans que le compilateur ait à connaître les détails de ce que la requête fera réellement. Donc de mon point de vue: non, LINQ serait beaucoup pire s'il avait suivi servilement la syntaxe de SQL.

2

Il est plus simple d'analyser l'expression lorsque les données initiales sont fournies au début. En raison de ce VS fournit la complétion de code même pour des requêtes LINQ partiellement écrites (grande fonctionnalité IMO).

5

D'abord, choisissez votre saveur de SQL - il y en a plusieurs! (T-, PL-, etc.).

En fin de compte, il existe des similitudes et des différences. Beaucoup de changements LINQ font plus sens - c'est-à-dire en choisissant votre source (FROM) avant d'essayer de filtrer (WHERE)/projection (SELECT), permettant une meilleure analyse statique etc (y compris intellisense), et une syntaxe de compréhension de requête plus naturelle. Cela aide à la fois le développeur et le compilateur, donc je suis heureux.