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更是异常。在指定域之前,应该如何知道我们正在做什么。