2009-10-13 97 views
3

爲什麼Andres Heilsberg設計的LINQ語法與SQL的語法不同(爲程序員學習全新的東西造成了開銷)?LINQ語法與SQL語法

如果它使用與SQL相同的語法,它會更好嗎?

回答

21

LINQ並不意味着SQL。這意味着它是一種獨立於數據源的合理可能的查詢語言。現在承認它有很強的SQL偏見,但它並不意味着只是在源代碼中嵌入SQL(幸運的是)。

個人而言,我很大程度上是更喜歡LINQ的語法到SQL的。特別是,LINQ中的排序更合乎邏輯。只要查看查詢子句的順序,就可以看到邏輯處理查詢的順序。您從一個數據源開始,可能會進行一些過濾,排序等,並且通常以投影或分組結束。把它和SQL比較一下,你從哪裏開始說你感興趣的列,甚至不知道你在說什麼表。在這方面,LINQ不僅更加合乎邏輯,而且它允許工具更好地與您合作 - 如果Visual Studio知道您開始的數據,那麼當您開始編寫select子句時(例如),它可以幫助您使用IntelliSense。此外,它允許使用擴展方法將LINQ查詢表達式轉換爲「點表示法」,使其相對簡單,而編譯器不必知道查詢實際執行的任何細節。

因此,從我的觀點來看:不,如果它嚴格遵循SQL的語法,LINQ將會是很多更糟糕的

2

在初始提供初始數據時,解析表達式會更簡單。

因爲這個VS提供了代碼完成,即使對於部分編寫的LINQ查詢(偉大功能IMO)也是如此。

5

首先,選擇你的SQL風格 - 有幾個! (T-,PL-等)。

最終,有相似之處和不同之處。很多LINQ變化使更具有的意義 - 即在嘗試過濾(WHERE)/投影(SELECT)之前選擇源代碼(FROM),允許更好的靜態分析等(包括intellisense)和更自然的查詢理解語法。這有助於開發人員和編譯人員,所以我很高興。