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

我正在创build一个Excel报告,计算一个月内的加权平均成本。 这是100多个月,其中一些月份没有任何数量。 如果月份没有数量,我将其设置为0以避免发生空的exception错误。

在生成报告时,对于那些没有数量的月份,我得到一个零除exception。 有没有办法检查使用安全导航(。?)运算符的总和计算中的值是否为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) 

请试试这个

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