LINQ语法序列

时间:2008-09-26 19:59:17

标签: linq linq-to-sql

以下SQL

SELECT * FROM customers

在LINQ中转换为此

var customers = from c in customers 
                select c;

他们有什么好的理由为什么来自和选择被交换?

我能想到的唯一合乎逻辑的理由是intellisens?为了让intellesens得到解决,它需要知道它的查询内容(范围)?

为什么会被抄袭?

1 个答案:

答案 0 :(得分:9)

选择是交换的,因为它表示LINQ查询语法所代表的方法调用的顺序。

这相当于

customers.Select(c=>c);

customers.Select();

SQL通过在继续之前处理整个语句来逃避它,但是为了得到智能感知这样的东西并弄清楚你的选择是否有效它必须是最后一步而不是第一步。

您可能还想查看FLWOR,它是一个更接近的表示,代表 for let where orderby 返回。你会注意到 for ,它等同于from,是第一个;并且 return ,相当于select,是最后一次。

SQL,这里更多的是异常。在您指定域名之前,如何知道您正在操作的内容。