我正在尝试比较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."
我只想通过修剪时间部分来比较日期。
有关如何做到这一点的任何建议吗?
答案 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();