相同lambda中2个值的总和?

时间:2014-05-19 08:53:23

标签: c# linq lambda

我有以下LINQ查询,我必须将.Sum分隔成单独的调用,当我将它们组合时,我得到NaN。这不起作用:

var rejectRate = (results.Sum(x => x.TraysRejectedDay / x.TraysProcessedDay)) * 100;

这确实有效:

var traysProcessed = results.Sum(x => x.TraysProcessedDay);
var rejectRate = (results.Sum(x => x.TraysRejectedDay / traysProcessed)) * 100;

这仅仅是LINQ的限制还是我做错了什么?这两个字段都是相同的数据类型(double

1 个答案:

答案 0 :(得分:8)

这是两个不同的查询。前者将每TraysRejectedDay除以TraysProcessedDay并返回总和。后者将每个TraysRejectedDay除以所有TraysProcessedDay的总和并返回总和。

因此,如果TraysProcessedDay例如可以为0,则除以0。也许你想忽略它们:

var rejectRate = (results
    .Where(x => x.TraysProcessedDay > 0)
    .Sum(x => x.TraysRejectedDay / x.TraysProcessedDay)) * 100;