我有这个问题:
var q = from p in DB.treatments
where p.start >= start && p.end <= end
select p;
在数据库中,结尾说06/14/2012 12:00 am.m.据说包括6月15日之前的6月14日。
所以如果我在06/14/2012 04:00 pm发送结束参数。它不会返回任何东西,只有它是06/15/2012但是我希望它整天搜索14,而不是15。
所以我想搜索14日的整天,并且当选择14时,日期时间将于06/14/2012中午12:00返回。
我该怎么做?
答案 0 :(得分:2)
您需要比较Date
和start
end
属性
var q = from p in DB.treatments
where p.start >= start.Date && p.end <= end.Date
select p;
如果start.Date
为6/14/2012 4:00 PM
,那么当您使用6/14/2012
属性时,您只需在Date
上进行比较。
答案 1 :(得分:0)
你需要与.Date进行比较。如果您要查询数据库,.Date函数将无法正常工作,因为它无法转换为SQL。
LINQ to Objects使用
var q = from p in DB.treatments
where p.start >= start.Date && p.end <= end.Date
select p;
用于LINQ to SQL或LINQ to ENTITIES使用
var startDate = start.Date;
var endDate = end.Date;
var q = from p in DB.treatments
where p.start >= start && p.end <= end
select p;
更新:如果正在使用.NET 4.0+,您可以使用实体函数TruncateTime。类似的东西:
var q = from p in DB.treatments
where EntityFunctions.TruncateTime(p.start) >= EntityFunctions.TruncateTime(start)
&& EntityFunctions.TruncateTime(p.end) <= EntityFunctions.TruncateTime(end)
select p;