我试图过滤具有特定日期的SQL表中的所有行。它适用于列不可为空的情况,但如果不成立则失败。使用Linq过滤可空的日期时间字段
这适用于不能为空日期时间字段:
ent.MyTable.Where(e => e.MyDate.Day == 12);
显然,这不是工作为空的日期时间字段。做互联网上的一些搜索后,我发现很多的“解决方案”这个问题看起来像到以下几点:
ent.MyTable.Where(e => e.MyDate != null && e.MyDate.Day == 12);
不幸的是,这并不为我工作的。而这是可以理解为什么如果我认为这是错误消息:
“System.Nullable”不包含“日”的定义,并没有扩展方法“日”接受一个类型的第一个参数“System.Nullable”可以找到(是否缺少using指令或程序集引用?)
我想避免获取所有 SQL行,然后在.NET滤波器,因为我只对极少数行的兴趣。有没有其他的方式,我目前没有看到?可空日期
ent.MyTable.Where(e => e.MyDate.HasValue && e.Date.Value.Day == 12);
是'MyDate'类中的定义为可空'DateTime'?如果是这样,你的第二行不应该编译。如果不是,那么你的模型与数据库不匹配。 – user3185569