使用Linq按可为null的日期时间字段进行筛选

本文关键字:字段 时间 筛选 日期 Linq null 使用 | 更新日期: 2023-09-27 18:00:16

我正在尝试筛选SQL表中具有特定日期的所有行。如果列不可为null,它会工作,但如果为null,则会失败。

这适用于不可为null的日期时间字段:

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

显然,这不适用于可为null的日期时间字段。在互联网上搜索后,我发现了许多解决这个问题的"解决方案",如下所示:

ent.MyTable.Where(e => e.MyDate != null && e.MyDate.Day == 12);

不幸的是,这对我也不起作用。如果我考虑这个错误消息,这是可以理解的:

"System.Nullable"不包含"Day"的定义,也找不到接受类型为"System.Nullable"的第一个参数的扩展方法"Day)(是否缺少using指令或程序集引用?)

我希望避免获取所有SQL行,然后在.NET中进行筛选,因为我只对极少数行感兴趣。还有其他我目前看不到的方法吗?

使用Linq按可为null的日期时间字段进行筛选

使用可为null的日期的value属性

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

试试这个:

 ent.MyTable.Where(e => e.MyDate.HasValue && e.MyDate.Value.Day == 12);
相关文章: