C#安全导航操作员避免除以零例外

时间:2017-04-05 15:03:01

标签: c# excel

我正在创建一份excel报告,用于计算跨越几个月的加权平均成本。这是100多个月,其中一些月份没有任何数量。如果月份没有数量,我将其设置为0以避免出现空异常错误。

生成报告时,对于没有数量的月份,我会得到除零例外。有没有办法在使用安全导航(。?)运算符的总和计算中检查值是否为0?

这是我尝试过的,无济于事:

如果数量为null,则将属性设置为0m:

     WeightedQty = (x.Item2 / 100m) * x.Item1?.qty ?? 0m

进行求和计算,得到除以零误差:

     WeightedCost = accrual_qtys.Sum(y => y.Quantity * key.wac) /  accrual_qtys.Sum(y => y.WeightedQty == 0m ? y.WeightedQty : 1m)

1 个答案:

答案 0 :(得分:1)

请试试这个

 WeightedCost = accrual_qtys.Sum(y => y.Quantity * key.wac) /  (accrual_qtys.Any(y => y.WeightedQty > 0m) ? accrual_qtys.Sum(y => y.WeightedQty) : 1m))