from关键字是否优于C#中的直接方法调用?

时间:2009-06-23 22:22:32

标签: c# .net linq

这两个选项中有:

var result = from c in coll where c % 2 == 0 select c;

var result = coll.Where ( c => c % 2 == 0 );

哪个更好?

使用一个优于另一个是否有任何优势?对我来说,第二个看起来更好,但我想听听其他人的意见。

2 个答案:

答案 0 :(得分:7)

如果你只有一两个条款,我会选择“点符号”。当您开始进行连接,分组或其他任何引入透明标识符的内容时,查询语法开始吸引更多内容。

通常值得尝试两种方式,并查看特定情况下最具可读性的内容。

就生成的代码而言,它们在大多数情况下都是完全相同的。偶尔会出现一个可以用点符号表示的重载,这使得它比查询表达式语法更简单,但在大多数情况下对其他所有内容都具有值可读性。

我对此主题也有blog post。我肯定会建议开发人员应该对这两个选项感到满意 - 例如,如果一位同事使用LINQ但是不了解查询表达式的基本原理,我会非常担心。 (他们不需要知道所涉及的所有翻译,但对正在发生的事情的一些想法将使他们的生活变得更加容易。)

答案 1 :(得分:2)

我总是使用lambda语法,因为对我而言,实际发生的事情更清楚,启动看起来很酷。但是我们在这里有一些开发人员总是这样做(我想是sql书呆子:)幸运的是,像ReSharper这样的工具可以通过点击在两者之间进行转换。