理解LINQ查询 - 按升序排序

时间:2013-05-03 09:00:37

标签: c# linq

我不明白为什么代码A是正确的并且代码B不正确:

代码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

3 个答案:

答案 0 :(得分:9)

LINQ-Query不是SQL查询,因此有自己的语法规则。你必须遵循命令:

FROM     
WHERE      
ORDER BY     
SELECT      
GROUP BY

与您无法编写SQL语句的原因相同:

SELECT * WHERE i=2 FROM tableName

但必须写

SELECT * FROM tableName WHERE i=2

答案 1 :(得分:3)

简而言之:语法要求它。请参阅Microsoft文档here

  

查询表达式必须以from子句开头,并且必须以a结尾   选择或分组子句。

答案 2 :(得分:2)

From MSDN doc,您会看到关键字的正确顺序

  

查询表达式必须以from子句开头,并且必须以a结尾   选择或分组子句。在第一个从句子和最后一个之间   select或group子句,它可以包含一个或多个这些可选项   从句:where,orderby,join,let甚至是from子句。   您还可以使用into关键字来启用连接的结果或   group子句作为其他查询子句的来源   相同的查询表达式。