C# 同一λ中的两个值之和?
我有下面的LINQ查询,其中我必须将C# 同一λ中的两个值之和?,c#,linq,lambda,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 =
.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
)这是两个不同的查询。前者将每个TraysRejectedDay
除以TraysProcessedDay
并返回总和。后者将每个TraysRejectedDay
除以所有TraysProcessedDay
的总和,并返回总和
例如,如果TraysProcessedDay
可以是0,你就要除以0。也许你想忽略它们:
var rejectRate = (results
.Where(x => x.TraysProcessedDay > 0)
.Sum(x => x.TraysRejectedDay / x.TraysProcessedDay)) * 100;
这是两个不同的查询。前者将每个
TraysRejectedDay
除以TraysProcessedDay
并返回总和。后者将每个TraysRejectedDay
除以所有TraysProcessedDay
的总和,并返回总和。TraysProcessedDay
是否可以为零?这是否会给出一个DivideByZeroException
而不是NaN
?@Default:from:“当操作的结果未定义时,方法或运算符返回NaN。例如,将零除以零的结果是NaN,”