使用Linq Lambda函数将可为Null的小数和百分比相加

本文关键字:小数 百分比 Null Lambda Linq 函数 使用 | 更新日期: 2023-09-27 17:49:18

更新

我是在要求。。。

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

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

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输出百分比的最佳方式吗?有没有我不用的话务员?是否需要求和?我只需要将小数转换为百分比,并考虑到null。

使用Linq Lambda函数将可为Null的小数和百分比相加

试试这个:

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

或者:

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