2013-11-15 46 views
-2

爲什麼SELECT關鍵字在LINQ結束,而它在SQL查詢開始時查詢SELECT關鍵字和SQL

from m in myClass1 
where m.myfield == value 
select m 

select * from myTable 
+1

並非所有的sql查詢都以'SELECT'開頭,我經常在T-SQL中使用[common-table-expressions](http://msdn.microsoft.com/zh-cn/library/ms175972.aspx):' WITH CTE AS(SomeQueries) SELECT A,B,C FROM CTE ...'。 –

回答

2

因爲這就是設計者設計它的方式。 LINQ不是SQL。

它還可以幫助查詢的格式按照相同的流程拉姆達:

myClass1.Where(m.myfield == value).Select(m => m); 
7

所以,你可以在select子句中獲得智能感知。

這樣,當你開始輸入select時,編譯器已經知道查詢中涉及的類型。

它也讀得更自然;選擇是任何查詢的最後一步。

+1

Upvoted,因爲這表明他們爲什麼決定以這種方式設計它們有一些邏輯。 – user2366842

1

因爲這些是兩種不同的語言:雖然看起來C#和VB.NET語言設計者看着SQL的關鍵詞借用語義,但他們沒有采用語法「批發」,因爲需要將語法合併到LINQ語言。

請注意,他們選擇的語法對於自動完成工具很友好:當您編寫select時,該類的名稱是已知的,讓Visual Studio爲您提供myClass屬性的自動完成功能。