LINQ运算符与LINQ方法:限制,一方的优点/缺点?

时间:2010-09-05 19:45:17

标签: linq

LINQ运算符和LINQ方法的优缺点是什么?一个人有限制或增加能力而另一个没有吗?

1 个答案:

答案 0 :(得分:4)

LINQ中的术语“运算符”与C#语言运算符(+,&& etc)的正常意义上的“运算符”不同。 LINQ standard query operators只是LINQ方法,预计可以通过大多数提供程序(以及特别是通过LINQ to Objects提供的那些提供程序)提供。

实际询问使用这样的查询表达式的利弊:

var query = from item in source
            where item.SomeProperty == 5
            select item.OtherProperty;

与普通扩展方法调用的“流畅接口”或“点符号”相比:

var query = source.Where(item => item.SomeProperty == 5)
                  .Select(item => item.OtherProperty);

?如果是这样,我可以更详细地写一下,但基本上是:

  • 通常没有性能差异,因为查询表达式被编译器有效地转换为后一种语法。有时你可以通过点表示法使用重载,这些重载是通过查询表达式无法实现的,你可以通过这种方式提高效率。
  • 使用多个代理(例如JoinGroupBy趋势的运算符在查询表达式语法中更具可读性
  • 如果您的查询在查询表达式语法中使用了大量透明标识符,则点符号可能很难看
  • 如果您的查询非常简单(只是Where和/或Select),那么点符号可能会更简单
  • 如果您使用的是查询表达式不支持的方法(例如Count()ToList()等),那么必须将查询表达式括起来可能很难看