“The specified type member 'Date' is not supported in LINQ ”

后端 未结 4 927
野性不改
野性不改 2020-12-11 08:10
_dbEntities.EmployeeAttendances.Where(x => x.DailyDate.Date.Equals(DateTime.Now.Date)).ToList();

\"The specified type member \'Da

4条回答
  •  没有蜡笔的小新
    2020-12-11 08:59

    EntityFramework cannot convert DateTime.Date to SQL. So, it fails to generate expected SQL. Instead of that you can use EntityFunctions.TruncateTime() or DbFunctions.TruncateTime()(based on EF version) method if you want to get Date part only:

     _dbEntities.EmployeeAttendances
                .Where(x => EntityFunctions.TruncateTime(x.DailyDate) == DateTime.Now.Date)
                .ToList();
    

    Additional info:

    EntityFunctions methods are called canonical functions. And these are a set of functions, which are supported by all Entity Framework providers. These canonical functions will be translated to the corresponding data source functionality for the provider. Canonical functions are the preferred way to access functionality outside the core language, because they keep the queries portable.

    You can find all canonical functions here and all Date and Time Canonical Functions here.

    Update:

    As of EF6 EntityFunctions has been deprecated for System.Data.Entity.DbFunctions.

提交回复
热议问题