Linq To Sql 一个小技巧

今天碰到一个问题

var totalAmount = _context.UsersMonthCharges.Where(p=>p.UserName == UserName).Sum(data => data.Amount);

Amount 为decimal类型

当查询的 UsersMonthCharges 不存在这个用户的时候

会抛出 不能将 Null 值赋给类型为 System.Decimal (不可为 null 的值类型)的成员。

这个异常,解决方法,搜索了下google,没找到答案

自己开动脑筋....

猜测他的推断数据结果类型是根据 data => data.Amount 这个Amount来获取,尝试取巧方法:

var totalAmount = _context.UsersMonthCharges.Where(p=>p.UserName == UserName).Sum(data => (decimal?)data.Amount);

发现 鼠标放在Sum函数上,哈,果然不出所料,结果类型已经被推断为 decimal?

重新编译执行,的确已经解决这个问题,结果为 null

简单搞定这个问题

原文地址:https://www.cnblogs.com/mine/p/1399770.html