2008-09-26 4 views
2

L'instruction SQL suivanteLINQ Syntext Séquence

SELECT * FROM customers 

converti en ce dans LINQ

var customers = from c in customers 
       select c; 

est leur tout bon reasones pourquoi de et sélectionnez est swaped?

La seule raison logique que je peux penser est pour intellisens? Pour que l'intellesens soit résolu, il doit savoir ce qu'il interroge (portée)?

D'autres raisons pour lesquelles il a été remplacé?

Répondre

9

La sélection est permutée car elle représente l'ordre des appels de méthode que représente la syntaxe de la requête LINQ.

Cela équivaut à

customers.Select(c=>c); 

ou

customers.Select(); 

SQL se avec elle, en traitant la déclaration avant de procéder, mais pour faire avancer les choses comme IntelliSense et de déterminer si votre sélection est valide, elle doit être la dernière étape et non la première.

Vous pouvez également regarder FLWOR, qui est une représentation plus proche, qui signifie pour, nous, , orderby et retour. Vous noterez le pour, ce qui équivaut à de, est premier; et le renvoie, ce qui équivaut à sélectionner, est le dernier. SQL, ici, est plus l'anomalie. Comment est-il supposé savoir ce que vous exploitez avant d'avoir spécifié votre domaine?

+0

En outre, il est intéressant de noter que, pour des raisons évidentes, la nouvelle fonction Intellisense de SQL 2008 Management Studio ne démarre pas tant que vous n'avez pas une fonction FROM ... – Codewerks