【发布时间】:2013-11-16 14:27:23
【问题描述】:
db.Projects.Select(x => new Statistic {
Posts = x.Members.Sum(m => m.Posts.Count())
})
为什么这段代码会抛出异常:
转换为值类型“System.Int32”失败,因为物化了 值为空。结果类型的泛型参数或查询 必须使用可空类型。
这段代码运行良好
db.Projects.Select(x => new Statistic {
Posts = x.Members.SelectMany(m => m.Posts).Count()
})
?
结构直观:
项目有很多成员。
会员有很多帖子。
public virtual ICollection<Post> Posts { get; set; }
编辑:最终工作代码
db.Projects.Select(x => new Statistic {
Posts = (int?)x.Members.Sum(m => m.Posts.Count()) ?? 0
})
【问题讨论】:
-
Posts为空。尝试将null的int转换为Sum()失败。