扩展方法和直接查询之间的区别

时间:2011-03-13 11:29:33

标签: c# .net linq

var selectedProducts = from p in products
                       where p.Category == 1
                       select p;

var selectedProducts =  products.Where(p=>p.Category==1) ;

上述两个陈述似乎产生了相同的结果。

然后有什么不同(有时是内部的)?

哪一个更有效率?

2 个答案:

答案 0 :(得分:6)

没有区别。第一个(查询表达式)由编译器转换为第二个,并且对运行时没有影响。

另见:

答案 1 :(得分:2)

在这种情况下,这两种方式没有任何区别,但在某些情况下更好地使用查询,在某些情况下更好地使用扩展方法或不可能使用查询。

您可以在扩展方法复杂且无法读取的情况下使用查询。 此外,您可以在某些情况下使用扩展方法,例如Distinct,这在查询语法中不可用。您还可以使用扩展方法调用来使用method chaining来提高代码的可读性。

您可以使用扩展方法和查询的混合但不好(代码可读性):喜欢

(from p in products
where p.Category == 1
select p).Distinct()