【发布时间】:2010-06-07 10:44:07
【问题描述】:
如果我今天有这段代码可以使用 LINQ 找出总和:
return (MyArray.Sum(r => r.Trips);
我只想包含它 r.CanDrive == true。
你能在单个链接 lambda 表达式中添加一个条件吗?你会怎么做呢
【问题讨论】:
如果我今天有这段代码可以使用 LINQ 找出总和:
return (MyArray.Sum(r => r.Trips);
我只想包含它 r.CanDrive == true。
你能在单个链接 lambda 表达式中添加一个条件吗?你会怎么做呢
【问题讨论】:
您可以像这样将两个 LINQ 链接在一起:
return MyArray.Where(r => r.CanDrive).Sum(r => r.Trips);
【讨论】:
大卫的回答完全正确,但另一种选择可能是使用条件运算符:
return MyArray.Sum(r => r.CanDrive ? r.Trips : 0);
我个人会使用Where 表单,但我想我会提出一个替代方案...
(另一种选择是创建自己的 Sum 方法,该方法同时采用谓词和投影,但我认为这太过分了。)
【讨论】: