0

我有这个查询:

var q = from p in DB.treatments
    where p.start >= start && p.end <= end
    select p;

在数据库中,最后说 06/14/2012 12:00 am 这应该包括整个 6 月 14 日,就在 6 月 15 日之前。

因此,如果我使用 06/14/2012 04:00 pm 发送结束参数,它不会返回任何内容,只有当它是 06/15/2012 但我希望它在 14 日而不是 15 日搜索一整天。

因此,我想搜索14天的整天,而DateTime选择14时,DateTime将返回此06/14/2012 12:00 AM。

我该怎么做?

4

2 回答 2

3

您需要比较 和的Date属性startend

 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属性时进行比较。

于 2012-06-14T14:49:32.853 回答
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;
于 2012-06-14T16:12:59.953 回答