var selectedProducts = from p in products
where p.Category == 1
select p;
var selectedProducts = products.Where(p=>p.Category==1) ;
上述两个陈述似乎产生了相同的结果。
然后有什么不同(有时是内部的)?
哪一个更有效率?
答案 0 :(得分:6)
没有区别。第一个(查询表达式)由编译器转换为第二个,并且对运行时没有影响。
另见:
答案 1 :(得分:2)
在这种情况下,这两种方式没有任何区别,但在某些情况下更好地使用查询,在某些情况下更好地使用扩展方法或不可能使用查询。
您可以在扩展方法复杂且无法读取的情况下使用查询。
此外,您可以在某些情况下使用扩展方法,例如Distinct,这在查询语法中不可用。您还可以使用扩展方法调用来使用method chaining
来提高代码的可读性。
您可以使用扩展方法和查询的混合但不好(代码可读性):喜欢
(from p in products
where p.Category == 1
select p).Distinct()