如何为lambda表达式添加条件

leo*_*ora 9 c# linq arrays

如果我今天有这个代码使用LINQ查找总和:

return (MyArray.Sum(r => r.Trips);
Run Code Online (Sandbox Code Playgroud)

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

你可以在单个linke lambda表达式中添加一个条件吗?你会怎么做

Dav*_*d M 16

您可以将两个LINQ链接在一起,如下所示:

return MyArray.Where(r => r.CanDrive).Sum(r => r.Trips);
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 10

大卫的答案是完全正确的,但另一种选择可能是使用条件运算符:

return MyArray.Sum(r => r.CanDrive ? r.Trips : 0);
Run Code Online (Sandbox Code Playgroud)

我会亲自使用 Where表格,但我想我会提出一个替代方案......

(另一个替代方案是创建自己的Sum方法,既采用谓词和投影,但我认为这是超过顶部.)