【发布时间】:2010-07-18 03:25:44
【问题描述】:
在 IQueryable 上调用 Max() 并且记录为零时,我得到以下异常。
转换为值类型“Int32”失败,因为具体化值为空。 结果类型的泛型参数或查询必须使用可为空的类型。
var version = ctx.Entries
.Where(e => e.Competition.CompetitionId == storeCompetition.CompetitionId)
.Max(e => e.Version);
现在我明白为什么会发生这种情况了,我的问题是,如果表格可以为空,最好的方法是什么。下面的代码可以工作并解决了这个问题,但是很丑的是没有 MaxOrDefault() 的概念吗?
int? version = ctx.Entries
.Where(e => e.Competition.CompetitionId == storeCompetition.CompetitionId)
.Select(e => (int?)e.Version)
.Max();
【问题讨论】:
-
您使用的是哪个版本的 EF?
-
Microsoft ADO.NET 实体框架功能社区技术预览版 4
标签: entity-framework