C#安全导航操作员避免被零除异常

C#安全导航操作员避免被零除异常,c#,excel,C#,Excel,我正在创建一个excel报告,用于计算几个月内的加权平均成本。这是100多个月,其中一些月没有任何数量。如果月份没有数量,我将其设置为0以避免出现空异常错误 在生成报告时,对于那些没有数量的月份,我会得到一个被零除的异常。是否有方法使用安全导航(.?)运算符检查总和计算中的值是否为0 以下是我尝试过的,但没有用: 如果数量为空,则将属性设置为0m: WeightedQty = (x.Item2 / 100m) * x.Item1?.qty ?? 0m 进行求和计算,得到除以零的误差:

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

在生成报告时,对于那些没有数量的月份,我会得到一个被零除的异常。是否有方法使用安全导航(.?)运算符检查总和计算中的值是否为0

以下是我尝试过的,但没有用:

如果数量为空,则将属性设置为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))