2

下面的 SQL

SELECT * FROM customers

在 LINQ 中转换为此

var customers = from c in customers 
                select c;

他们有什么好的理由交换 from 和 select 吗?

我能想到的唯一合乎逻辑的原因是智能感知?为了使智能感知器得到解决,它需要知道它在查询什么(范围)?

换了还有什么其他原因吗?

4

1 回答 1

9

Select 被交换,因为它表示 LINQ 查询语法所表示的方法调用的顺序。

这相当于

customers.Select(c=>c);

或者

customers.Select();

SQL 通过在继续之前处理整个语句来摆脱它,但是为了获得诸如智能感知之类的东西并确定您的选择是否有效,它必须是最后一步,而不是第一步。

您可能还想查看 FLWOR,它是一种更接近的表示形式,代表forletwhereorderbyreturn。你会注意到for,相当于 from ,是第一个;并且return,相当于 select ,是最后一个。

SQL,在这里,更多的是异常。在您指定域之前,应该如何知道您在做什么。

于 2008-09-26T20:05:26.027 回答