使用Linq Lambda函数将Nullable Decimal求和为百分比

时间:2014-03-11 00:20:50

标签: c# linq lambda

更新..

我在问这个......

我有FOR声明。 FOR语句通过reportList实现。 reportList对象是设置为数据库中特定视图的列表类型。

FOR循环遍历reportList并创建报告。在报告的最后,我必须从可以为零的十进制值输出一个百分比。

for (int i = 0; i < reportList.Count() - 1; i++)
{

   print report totals...
   lastly print percentage...
   htw.Write(reportList.Where(x => x.Name == reportList[i].Name && x == reportList[i].Value).Select(a => a.RequiredValue == null ? 0 : a.RequiredValue).Sum(a => a.Value * 100));
   }

评论后更新

评论后我将空逻辑替换为......

htw.Write(reportList.Where(x => x.Name == reportList[i].Name && x == reportList[i].Value).Select(a => a.RequiredValue ?? 0 : a.RequiredValue).Sum(a => a.Value * 100));

有了这个说,我的问题是,这是使用Linq和Lambda输出百分比的最佳方法吗?有没有我不使用的运营商? Sum需要吗?我只需要将小数转换为百分比并考虑空值。

1 个答案:

答案 0 :(得分:2)

试试这个:

reportList.Select(g => g.X ?? 0).Sum();

或者:

reportList.Select(g => g.X == null ? 0 : g.X * 100).Sum();