我有以下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
)
答案 0 :(得分:8)
这是两个不同的查询。前者将每TraysRejectedDay
除以TraysProcessedDay
并返回总和。后者将每个TraysRejectedDay
除以所有TraysProcessedDay
的总和并返回总和。
因此,如果TraysProcessedDay
例如可以为0,则除以0。也许你想忽略它们:
var rejectRate = (results
.Where(x => x.TraysProcessedDay > 0)
.Sum(x => x.TraysRejectedDay / x.TraysProcessedDay)) * 100;