【发布时间】:2016-08-05 11:25:38
【问题描述】:
我正在尝试过滤 SQL 表中具有特定日期的所有行。如果该列不可为空,则它可以工作,但如果是,则失败。
这适用于不可为空的日期时间字段:
ent.MyTable.Where(e => e.MyDate.Day == 12);
显然这不适用于可为空的日期时间字段。在互联网上进行了一些搜索后,我发现了许多针对此问题的“解决方案”,如下所示:
ent.MyTable.Where(e => e.MyDate != null && e.MyDate.Day == 12);
不幸的是,这对我也不起作用。如果我考虑这个错误消息,这是可以理解的:
“System.Nullable”不包含“Day”的定义,并且找不到接受“System.Nullable”类型的第一个参数的扩展方法“Day”(您是否缺少 using 指令或程序集引用? )
我想避免获取 所有 SQL 行,然后在 .NET 中进行过滤,因为我只对极少数行感兴趣。还有其他我目前看不到的方法吗?
【问题讨论】:
-
在你的课程中
MyDate被定义为 NullableDateTime吗?如果是这样,您的第二行不应该编译。如果不是,那么您的模型与数据库不匹配。
标签: c# linq datetime linq-to-sql linq-to-entities