我正在尝试筛选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中进行筛选,因为我只对极少数行感兴趣。还有其他我目前看不到的方法吗?
使用可为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);