为什么lambda在代码中?

Tho*_*mas 2 c# lambda

我找到了一个示例代码,其中lambda使用如下代码

var sumOfgreaterThanSeven = numbers.Sum(n => n > 7 ? n : 0);
Run Code Online (Sandbox Code Playgroud)

但上面的代码可以写成

var sumOfgreaterThanSeven = numbers.Sum(n > 7 ? n : 0);
Run Code Online (Sandbox Code Playgroud)

那么为什么用户写lambda.请帮助我理解为什么用户在这里写lambda.还告诉我lambda的优点是什么.谢谢

Mar*_*ell 12

lambda是因为你想要评估每个项目n的条件表达式.您添加的版本(Sum(n > 7 ? n : 0))无法工作 - n未在任何地方定义(编译器消息应为"名称'n'在当前上下文中不存在").

lambda可以理解为:

给定一个术语n,if n大于7return n,否则返回0

然后总结那个逻辑.

重新优势 - 首先是方便 - 还有构图.例如,使用LINQ-to-SQL,我绝对希望能够发出如下内容:

 select sum(case when row.col > 7 then row.col else 0 end)
 from sometable row
Run Code Online (Sandbox Code Playgroud)

当然,最好使用:

 var sumOfgreaterThanSeven = numbers.Where(n => n > 7).Sum();
Run Code Online (Sandbox Code Playgroud)

哪个会映射到

 select sum(row.col)
 from sometable row
 where row.col > 7
Run Code Online (Sandbox Code Playgroud)

这可能会更准确地击中指数