爲什麼SELECT關鍵字在LINQ結束,而它在SQL查詢開始時查詢SELECT關鍵字和SQL
from m in myClass1
where m.myfield == value
select m
?
select * from myTable
爲什麼SELECT關鍵字在LINQ結束,而它在SQL查詢開始時查詢SELECT關鍵字和SQL
from m in myClass1
where m.myfield == value
select m
?
select * from myTable
因爲這就是設計者設計它的方式。 LINQ不是SQL。
它還可以幫助查詢的格式按照相同的流程拉姆達:
myClass1.Where(m.myfield == value).Select(m => m);
所以,你可以在select
子句中獲得智能感知。
這樣,當你開始輸入select
時,編譯器已經知道查詢中涉及的類型。
它也讀得更自然;選擇是任何查詢的最後一步。
Upvoted,因爲這表明他們爲什麼決定以這種方式設計它們有一些邏輯。 – user2366842
因爲這些是兩種不同的語言:雖然看起來C#和VB.NET語言設計者看着SQL的關鍵詞借用語義,但他們沒有采用語法「批發」,因爲需要將語法合併到LINQ語言。
請注意,他們選擇的語法對於自動完成工具很友好:當您編寫select
時,該類的名稱是已知的,讓Visual Studio爲您提供myClass
屬性的自動完成功能。
並非所有的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 ...'。 –