LINQ文本序列

时间:2020-03-06 14:48:17  来源:igfitidea点击:

下面的SQL

SELECT * FROM customers

在LINQ中转换为此

var customers = from c in customers 
                select c;

他们将from和select交换的任何好的理由吗?

我能想到的唯一合乎逻辑的原因是智能吗?为了使智力得到解决,它需要知道它在查询什么(作用域)?

还有其他原因被交换吗?

解决方案

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

这相当于

customers.Select(c=>c);

或者

customers.Select();

SQL通过在继续操作之前处理整个语句来摆脱它,但是为了获得诸如intellisense之类的信息并弄清选择是否有效,它必须是最后一步,而不是第一步。

我们可能还想看一下FLWOR,它是一个更接近的表示形式,代表着,让,在哪里,订购和退货。我们会注意到for等于from,它是第一个;返回值(与select等效)是最后一个。

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