实体框架和日期时间比较

时间:2011-10-26 21:59:18

标签: linq entity-framework datetime entity-framework-4

是否可以创建linq查询以查找日期范围内的所有记录?

例如:

我有VacationStart,VacationEnd的桌子 - 都是datetime,我需要找到当前日期的所有待定假期。

我正在尝试

 context.Vacations..Where(x=> x.VacationStart >= DateTime.Now && x.VacationEnd < DateTime.Now)

但我得到0条记录......

样本数据2011-10-27 08:30:00.000 2011-10-28 17:00:00.000

当前日期:2011-10-26 23:39:46.297

我哪里错了?

由于

1 个答案:

答案 0 :(得分:1)

你要求在NOW之后开始并在NOW,Impossible之前结束的假期。尝试询问并比较不同的开始时间和结束时间以及开始时间小于结束时间的情况。

仅提供当前正在进行的假期。

var query = context.Vacations.Where(v => v.VacationEnd > DateTime.Now 
   && v.VacationStart < DateTime.Now);

给出尚未开始的假期。

var query = context.Vacations.Where(v => v.VacationStart > DateTime.Now);

提供正在进行或尚未开始的假期。

var query = context.Vacations.Where(v => v.VacationEnd > DateTime.Now);

最后一个不会过滤任何未来的假期。