2014-10-31 87 views
1

我想比较Entity Framework 6 LINQ Query中的日期。实体框架中的日期比较Linq查询

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

的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(); 

我还没有运行,虽然可能有一些语法错误,但想试试

+0

可以请您给一个如何在查询中引用它的例子 – 2014-10-31 22:31:29

+0

这个事情做了窍门 DateTime temp = DateTime.Now.Date; var bookings = context.Bookings.Include(“BookingItems”)。其中(x => x.IsDeleted == false && DateTime.Compare(DbFunctions.TruncateTime(x.BookingDate).Value,temp)== 0).ToList (); – 2014-10-31 22:37:51

1

的LINQ to SQL或SQL没有implemination 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(); 
+0

现在这个异常:{“此功能只能从LINQ调用实体”} – 2014-10-31 22:29:48