我有一个简单的LinqToSql查询
from p in GL_PROJECTs
where p.CREATE_DT == new DateTime(2009,10,26)
select new p
数据库中的某些记录创建的日期时间部分不是00:00:00,因此不会被此查询检索。我想要实现的是一整天的时间不敏感检索。
我尝试了以下内容,添加日期,试图比较像:
from p in GL_PROJECTs
where p.CREATE_DT.Date >= new DateTime(2009,10,26)
select new p
但是在LinqPad中我收到以下错误:
'System.Nullable' 不包含的定义 '日期',没有延期方法'日期' 接受第一个类型的参数 'System.Nullable' 可以找到(按F4添加一个 使用指令或汇编参考)
为什么这不起作用以及我能做些什么才能让它发挥作用的任何想法?
由于
答案 0 :(得分:2)
只需检查范围
from p in GL_PROJECTs
where p.CREATE_DT >= new DateTime(2009,10,26) &&
p.CREATE_DT < new DateTime(2009,10,27)
select new p
答案 1 :(得分:0)
如果它可以为空,则需要先使用Value
属性,然后在其上调用Date
:
p.CREATE_DT.Value.Date
也就是说,使用Date
属性将返回时间戳为午夜的日期,因此它仍然会有与之关联的时间。这对你所描述的内容没有帮助。您可以使用@AlbertEin's建议并检查范围。
答案 2 :(得分:0)
如果允许CREATE_DT在数据库中具有NULL值,则它将映射到.net中的Date?
类型(即通用类型Nullable<Data>
)。
您可以通过Value属性检索Nullable类型的实际日期。
尝试
from p in GL_PROJECTs
where p.CREATE_DT.Value.Date == new DateTime(2009,10,26)
select new p
但是如果CREATE_DT确实为null,则会抛出异常。要避免此异常,您必须确保Nullable类型确实包含值:
from p in GL_PROJECTs
where p.CREATE_DT.HasValue && p.CREATE_DT.Value.Date == new DateTime(2009,10,26)
select new p