下面的 SQL
SELECT * FROM customers
在 LINQ 中转换为此
var customers = from c in customers
select c;
他们有什么好的理由交换 from 和 select 吗?
我能想到的唯一合乎逻辑的原因是智能感知?为了使智能感知器得到解决,它需要知道它在查询什么(范围)?
换了还有什么其他原因吗?
下面的 SQL
SELECT * FROM customers
在 LINQ 中转换为此
var customers = from c in customers
select c;
他们有什么好的理由交换 from 和 select 吗?
我能想到的唯一合乎逻辑的原因是智能感知?为了使智能感知器得到解决,它需要知道它在查询什么(范围)?
换了还有什么其他原因吗?
Select 被交换,因为它表示 LINQ 查询语法所表示的方法调用的顺序。
这相当于
customers.Select(c=>c);
或者
customers.Select();
SQL 通过在继续之前处理整个语句来摆脱它,但是为了获得诸如智能感知之类的东西并确定您的选择是否有效,它必须是最后一步,而不是第一步。
您可能还想查看 FLWOR,它是一种更接近的表示形式,代表for、let、where、orderby和return。你会注意到for,相当于 from ,是第一个;并且return,相当于 select ,是最后一个。
SQL,在这里,更多的是异常。在您指定域之前,应该如何知道您在做什么。