2013-05-03 59 views
-3

我不明白爲什麼代碼A是正確的和代碼B不正確:瞭解LINQ查詢 - 排序依據上升

碼A

IEnumerable<decimal> loanQuery = 
from amount in loanAmounts 
where amount % 2 == 0 
orderby amount 
select ascending amount //this line 

代碼B(不正確)

IEnumerable<decimal> loanQuery = 
from amount in loanAmounts 
where amount % 2 == 0 
select amount 
orderby ascending amount 

由於很多人的回答都不正確,我現在發佈了正確的代碼:

IEnumerable<decimal> loanQuery = 
from amount in loanAmounts 
where amount % 2 == 0 
orderby amount ascending 
select amount 
+0

因爲您需要用select完成查詢。 – Maarten 2013-05-03 09:05:06

+4

在編程語言中有一種叫做語法的東西 – Cris 2013-05-03 09:05:47

+0

http://msdn.microsoft.com/en-IN/library/bb397678.aspx – Freelancer 2013-05-03 09:06:13

回答

9

一個LINQ查詢不是一個SQL查詢,所以它有自己的語法規則。你必須遵循的順序:

FROM  
WHERE  
ORDER BY  
SELECT  
GROUP BY 

其同樣的原因,爲什麼你不能寫的SQL語句:

SELECT * WHERE i=2 FROM tableName 

,但必須寫

SELECT * FROM tableName WHERE i=2 
+0

謝謝。這有幫助。我一定在文檔中錯過了。 – Neeta 2013-05-03 09:10:59

3

簡而言之:它的語法是必需的。請參閱Microsoft文檔here

的查詢表達式必須從第一個開始,且必須與 選擇或group子句結束。

1

From MSDN doc,你看到了什麼正確的訂單爲關鍵字

查詢表達式必須以from子句開頭,並且必須以 select或group子句結尾。在第一個從句子和最後一個 select或group子句之間,它可以包含一個或多個這些可選的 子句:where,orderby,join,let,甚至還有其他子句。 也可以使用into關鍵字將聯接的結果或 group子句用作相同查詢表達式中 中其他查詢子句的來源。