在LINQ查询中,运算符的顺序是from- where- select:
int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };
var numQuery = from num in numbers
where (num % 2) == 0
select num;
Run Code Online (Sandbox Code Playgroud)
如果我们把这个select子句放在传统的第一个select- from- whereSQL中,它就无法编译:
var numQuery = select num // error: ; expected
from num in numbers
where (num % 2) == 0;
Run Code Online (Sandbox Code Playgroud)
这种限制背后的原因是什么?
Jon*_*eet 14
这种限制背后的原因是什么?
我认为主要原因实际上是智能感知.在IDE知道您正在使用哪种类型的集合之前,它无法建议您要从该集合的元素中使用哪些属性.现在语法的工作方式,在您编写select或where子句时,IDE可以告诉元素类型是什么并提出建议.
我会说通过按时间顺序放置查询,它还有一个更有意义的好处:你从一个源开始,过滤它,转换它等等,最后得到一个结果.
最后,我怀疑它使语言从查询表达式转换为"正常"C#(通常使用扩展方法)更易于表达.
我认为为什么SQL向后表达会更合理:)
| 归档时间: |
|
| 查看次数: |
693 次 |
| 最近记录: |