使用Linq

时间:2016-08-05 11:25:38

标签: c# linq datetime linq-to-sql linq-to-entities

我试图过滤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中进行过滤,因为我只对非常少量的行感兴趣。还有其他方式我现在还没有看到吗?

2 个答案:

答案 0 :(得分:3)

使用可以为空的日期的值属性

{{1}}

答案 1 :(得分:1)

试试这个:

 ent.MyTable.Where(e => e.MyDate.HasValue && e.MyDate.Value.Day == 12);