【发布时间】:2010-10-16 08:03:26
【问题描述】:
from i in Db.Items
select new VotedItem
{
ItemId = i.ItemId,
Points = (from v in Db.Votes
where b.ItemId == v.ItemId
select v.Points).Sum()
}
我收到了这个查询,但是如果没有发现异常投票,它就会失败:
The null value cannot be assigned to a member with type System.Int32 which is a non-nullable value type.
我假设它是因为 sum 返回一个 int 而不是一个可为空的 int,所以给 sum 一个 int?由于输入只给出相同的错误,可能导致 sum 仅适用于整数。
有什么好的解决方法吗?
【问题讨论】:
-
AndreasN,我无法以任何方式重现您的问题...... v.Points 的类型是什么?是 int, int?, List ....
-
它的 linq2Sql,应该这么说。
-
仍然 - v.Points 的类型是什么?整数整数? IEnumerable
-
我觉得DefaultIfEmpty不能用来解决这些问题太可惜了。无论出于何种原因,当它在查询和 Sum 方法之间楔入时,它似乎不起作用。
标签: c# linq linq-to-sql sum nullable