我在问这个......
我有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需要吗?我只需要将小数转换为百分比并考虑空值。
答案 0 :(得分:2)
试试这个:
reportList.Select(g => g.X ?? 0).Sum();
或者:
reportList.Select(g => g.X == null ? 0 : g.X * 100).Sum();