如何在 Lambda 表达式中添加条件

10

如果我今天有这段代码,想使用LINQ来计算总和:

return (MyArray.Sum(r => r.Trips);

我想只包括那些 r.CanDrive == true 的 itms。

你可以在单行lambda表达式中添加条件吗?如何实现?

2个回答

17

你可以像这样将两个 LINQ 位连接在一起:

return MyArray.Where(r => r.CanDrive).Sum(r => r.Trips);

前面的括号是什么意思? - Codesleuth
您的拨号魔杖已经邮寄出去了 :) - MPritchard

11

David的答案完全正确,但另一个选择是使用条件运算符:

return MyArray.Sum(r => r.CanDrive ? r.Trips : 0);

个人而言,我会使用Where形式,但是我想提供另一种选择...

(另一个选择是创建自己的Sum方法,该方法既接受谓词又接受投影,但我认为这有些过头了。)

I个人建议使用Where形式,但是这里提供了另一种选择。还有一种选择是创建自己的Sum方法,它可以同时接受谓词和投影,但是这可能有点过于复杂。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接