The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
使用EF时,在Limda表达式中( query.Where(x => x.CheckInDate >= bd.Date);)编译没有异常,但运行时,执行查询的时候抛出了这个异常,
后来,在 http://sandeep-tada.blogspot.com/2014/02/the-specified-type-member-date-is-not.html 中发现,原来Linq中不允许使用DateTime成员Date
Reason: Entity Framework doesn't allow the use of the Date member of DateTime inside an LINQ query. And because of the use of .Date member it throws the exception as when query get executed DateTime.Date cannot be converted to SQL statement.
为了避免出现这种情况,有两种解决办法:
一、将bd.Date在Linq外部赋值后再传入:
var bdDay = bd.Date;
query.Where(x => x.CheckInDate >= bdDay );
二、通过DbFuntions功能方法来转义一下
(相关方法例如:System.Data.Entity.DbFunctions.TruncateTime、DbFunctions.DiffDays等)
query.Where(x => x.CheckInDate >= DbFunctions.TruncateTime(bd.Date));
在Core中,与DbFunction对应的是EntityFunctions。