了解LINQ查询-顺序升序

本文关键字:顺序 升序 查询 LINQ 了解 | 更新日期: 2023-09-27 18:12:09

我不明白为什么代码A是正确的而代码B是错误的:

代码

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

了解LINQ查询-顺序升序

LINQ-Query不是SQL-Query,所以有自己的语法规则。你必须按照顺序:

FROM     
WHERE      
ORDER BY     
SELECT      
GROUP BY

这和你不能写sql语句的原因是一样的:

SELECT * WHERE i=2 FROM tableName

但必须写

SELECT * FROM tableName WHERE i=2

总之:这是语法所要求的。请看这里的微软文档

查询表达式必须以from子句开始,以A结尾选择或分组子句。

从MSDN文档中,您可以看到关键字

的正确顺序

查询表达式必须以from子句开始,以A结尾选择或分组子句。在第一个from从句和最后一个从句之间选择或分组子句,它可以包含一个或多个这些可选的子句:where, order, join, let,甚至extra from子句。还可以使用into关键字来启用连接或中的其他查询子句作为源相同的查询表达式