LINQ to Entities不支持指定的类型成员“Date”

时间:2013-12-05 11:13:02

标签: c# asp.net asp.net-mvc entity-framework

我的asp.net mvc Web应用程序中有以下方法: -

public SystemInformation GetSystemInfo(int pagesize)           
{
    var d = DateTime.Today;
    SystemInformation s = new SystemInformation()
    {                            
       DeleteNo = tms.TechnologyAudits.Where(a => (EntityFunctions.TruncateTime(a.DateTimeEnd.Date) == EntityFunctions.TruncateTime(d) && a.AuditAction.Name.ToLower() == "delete")).Count(),

    };
    return s;
}

但上述情况引发了以下异常: -

  

LINQ to不支持指定的类型成员'Date'   实体。仅初始化程序,实体成员和实体导航   支持属性。

2 个答案:

答案 0 :(得分:4)

a.DateTimeEnd.Date无法翻译。等价物是EntityFunctions.TruncateTime(a.DateTimeEnd)。你不需要/不能同时使用它们。

DateTime.Date

  

与此实例具有相同日期的新对象和时间值   设置为午夜12:00:00(00:00:00)

EntityFunctions.TruncateTime

  

清除时间部分的输入日期。

答案 1 :(得分:2)

LINQ to Entities无法将大多数.NET Date方法(包括您使用的转换)转换为SQL,因为没有等效的SQL。

在您的情况下,LINQ无法翻译此

(EntityFunctions.TruncateTime(a.DateTimeEnd.Date)

解决方案是将对象强制转换为LINQ语句,然后传入一个值。