实体框架Linq查询中的日期比较

时间:2014-10-31 22:20:28

标签: c# entity-framework

我正在尝试比较Entity Framework 6 LINQ Query中的日期。

var bookings = context.Bookings.Include("BookingItems").Where(x=>x.IsDeleted == false && DateTime.Compare(DbFunctions.TruncateTime(x.BookingDate).Value,DateTime.Now.Date)==0).ToList();

然而它导致异常:

"The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported."

我只想通过修剪时间部分来比较日期。

有关如何做到这一点的任何建议吗?

2 个答案:

答案 0 :(得分:2)

Linq无法将一些原生的.Net代码翻译成Sql,所以尝试在Linq查询之外使用DateTime.Now函数和其他.Net函数,然后在查询中引用它。

String currentTime = DateTime.Now.ToShortDateString();

var bookings = context.Bookings.Include("BookingItems").Where(x=>x.IsDeleted == false && DateTime.Compare((x.BookingDate).Value.Date,currentTime)==0).ToList();

虽然可能存在语法错误,但我还没有运行,但无论如何都要尝试

答案 1 :(得分:1)

Linq to sql或sql没有实现DateTime.Compare

尝试转换为收藏。

var bookings = context.Bookings.Include("BookingItems").ToList().Where(x=>x.IsDeleted == false && DateTime.Compare(DbFunctions.TruncateTime(x.BookingDate).Value,DateTime.Now.Date)==0).ToList();