【发布时间】:2013-03-28 20:23:54
【问题描述】:
我不知道上面的标题是否合适。
就像a 和b:
var list = Enumerable.Range(0, 100);
var a = from l in list
where l % 2 == 0
select l;
var b = list.Where(l => l % 2 == 0);
我应该什么时候使用它们?有什么区别吗?
【问题讨论】:
-
是一样的。第一个称为 LINQ 表达式,第二个 - lambda 表达式
-
@realnero 实际上,问题的标题是正确的。查询语法表达式 vs 方法语法表达式。
-
补充下面的答案——如果你使用linqpad之类的工具,你可以自己输入这段代码并运行它,然后查看IL编译的代码。这两个语句的代码完全相同。 =)
-
顺便说一句,请注意,您可以使用正确的
Select、Where等方法(但不能使用IQueriable)创建一个类,并且它可以与查询语法和方法会被调用。请参阅此处以获取一个有趣的示例:bartdesmet.net/blogs/bart/archive/tags/Z3/default.aspx 以及我在此处设置它的问题:stackoverflow.com/questions/15566240/…