LINQ Syntext Sequence

rud*_*ler 2 linq linq-to-sql

以下SQL

SELECT * FROM customers
Run Code Online (Sandbox Code Playgroud)

在LINQ中转换为此

var customers = from c in customers 
                select c;
Run Code Online (Sandbox Code Playgroud)

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

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

它被转换的任何其他原因?

Ori*_*ian 9

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

这相当于

customers.Select(c=>c);
Run Code Online (Sandbox Code Playgroud)

要么

customers.Select();
Run Code Online (Sandbox Code Playgroud)

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

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

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