处理 LINQ sum 表达式中的 null

2024-05-22

我正在使用 LINQ 查询来查找列的总和,并且在少数情况下该值有可能为空

我现在使用的查询是

int score = dbContext.domainmaps.Where(p => p.SchoolId == schoolid).Sum(v => v.domainstatement.Score ?? 0);

where domainstatement可以为空,分数也可以为空

现在执行此查询后,我收到错误

转换为值类型“Int32”失败,因为具体化值为 null。结果类型的泛型参数或查询必须使用可为 null 的类型。

那么如何有效地处理 null 异常并将 sum 作为 INT 值返回呢?


Here

Sum(v => v.domainstatement.Score ?? 0);

您刚刚将空合并运算符放在了错误的位置。通常,此类错误可以通过将不可为空类型提升为可空类型来解决(无DefaultOrEmpty并且需要 null 检查),但是这里您已经有了一个可以为 null 的类型,并且使用 null 合并运算符,您所做的与错误消息告诉您的相反 -查询必须使用可为空的类型.

只需移动它after the Sum打电话,问题就消失了:

Sum(v => v.domainstatement.Score) ?? 0;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理 LINQ sum 表达式中的 null 的相关文章