初次使用SUM方法的时候出现错误,代码如下
decimal totalSalary=_db.Users.Where(x=>x.Age>35).Sum(x=>x.Salary);
不能将 Null 值赋给类型为 System.Decimal
因为当Where条件筛选不出来任何数据的时候,合计就获得Null值,无法传递个decimal
而且经尝试用decimal?也无法解决问题
只需要在sum前面加上ToList,就可以在没有搜索出数据的时候计算出0,代码如下
decimal totalSalary=_db.Users.Where(x=>x.Age>35).ToList().Sum(x=>x.Salary);
但是如果你使用的是SumAsync方法,就无法通过ToList来解决啦!
正确的解决方法是:
decimal? totalSalary=_db.Users.Where(x=>x.Age>35).SumAsync(x=>(decimal?)x.Salary);