我知道为什么会这样,但有人能指出正确的语法方向吗?
目前我有:
var expense = from e in db.I_ITEM
where e.ExpenseId == expenseId
select e;
return expense.Sum(x => x.Mileage ?? 0);
我的问题是 x.Mileage 的类型是“double?”并且在数据库中有空值。
我得到的错误是:
Exception Details: System.InvalidOperationException: The cast to value type 'Double' failed because the materialized value is null. Either the result type's generic parameter or the query must use a nullable type.
正确的语法是什么?
最佳答案
令我惊讶的是它失败了,但是可能的另一种方法是简单地对可为 null 的值求和,然后然后使用 null 合并运算符:
return expense.Sum(x => x.Mileage) ?? 0d;
当然,在 LINQ to Objects 中,如果序列中没有非空值,这会做正确的事情,忽略空值并为您提供空结果(在空合并运算符之前)。
关于c# - LINQ .SUM() 和可为空的数据库值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5154728/