我试图过滤SQL表中具有特定日期的所有行。如果列不可为空,则它可以工作,但如果不是,则可以。
这适用于不可为空的日期时间字段:
ent.MyTable.Where(e => e.MyDate.Day == 12);
显然,这不适用于可为空的日期时间字段。在互联网上进行了一些搜索之后,我找到了很多解决方案。对于这个看起来像下面的问题:
ent.MyTable.Where(e => e.MyDate != null && e.MyDate.Day == 12);
不幸的是,这对我也不起作用。如果我考虑这个错误信息,这是可以理解的:
' System.Nullable'不包含' Day'的定义。没有延期方法' Day'接受类型为#System; Nullable'的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)
我想避免获取所有 SQL行,然后在.NET中进行过滤,因为我只对非常少量的行感兴趣。还有其他方式我现在还没有看到吗?
答案 0 :(得分:3)
使用可以为空的日期的值属性
{{1}}
答案 1 :(得分:1)
试试这个:
ent.MyTable.Where(e => e.MyDate.HasValue && e.MyDate.Value.Day == 12);