我在项目中使用LINQ有一些问题。第一个问题是-旧(select Item from..
)linq和新版本(.Select(r => ..)
)之间在性能上有区别吗?
第二个问题,如何翻译LINQ表达式(以及如何翻译)?会先将其翻译成旧语法,然后再翻译成其他某种东西(中间语言)吗?
最佳答案
编写linq查询的两种方式之间没有任何区别。
具体来说,
var adults = from customer in customers
where customer.Age>18
select customer;
等效于此:
var adults = customers.Where(customer=>customer.Age>18);
实际上,编译器将第一个查询转换为第二个查询。编写linq查询的第一种方法类似于语法糖。在后台,如果您编译代码,然后使用反汇编程序查看IL代码,则会注意到您的查询已转换为上述形式的第二种。
用第一种方式编写的查询,我们说我们已经使用了查询语法。使用第二种方式编写查询时,我们说我们使用了流利的语法。