如果我今天有这段代码,想使用LINQ来计算总和:
return (MyArray.Sum(r => r.Trips);
我想只包括那些 r.CanDrive == true 的 itms。
你可以在单行lambda表达式中添加条件吗?如何实现?
你可以像这样将两个 LINQ 位连接在一起:
return MyArray.Where(r => r.CanDrive).Sum(r => r.Trips);
David的答案完全正确,但另一个选择是使用条件运算符:
return MyArray.Sum(r => r.CanDrive ? r.Trips : 0);
个人而言,我会使用Where
形式,但是我想提供另一种选择...
(另一个选择是创建自己的Sum
方法,该方法既接受谓词又接受投影,但我认为这有些过头了。)
I个人建议使用Where
形式,但是这里提供了另一种选择。还有一种选择是创建自己的Sum
方法,它可以同时接受谓词和投影,但是这可能有点过于复杂。