如果我今天有这个代码使用LINQ找出总和:
return (MyArray.Sum(r => r.Trips);
我想只包含itms ,其中r.CanDrive == true 。
你可以在单个linke lambda表达式中添加一个条件吗?你会怎么做?
答案 0 :(得分:16)
您可以将两个LINQ链接在一起,如下所示:
return MyArray.Where(r => r.CanDrive).Sum(r => r.Trips);
答案 1 :(得分:10)
David的回答是完全正确的,但另一种选择可能是使用条件运算符:
return MyArray.Sum(r => r.CanDrive ? r.Trips : 0);
我个人会使用Where
表格,但我想我会提出另一种选择......
(另一个替代方案是创建自己的Sum
方法,该方法同时采用谓词和投影,但我认为这超出了顶层。)