使用DbFunctions.TruncateDate仍然有错误:** LINQ to Entities不支持指定的类型成员'Date'。**

时间:2018-04-17 08:05:57

标签: c# .net entity-framework linq entity-framework-6

我收到错误: LINQ to Entities不支持指定的类型成员'Date'。

我有一个代码,我试图按照其他两个帖子的答案:LINQ to Entities does not recognize the method 'System.TimeSpan Subtract(System.DateTime)' methodLinq To Sql compare Time only

此方法也由许多线程并行执行。

public List<Element> GetResults()
{
    List<Element> elements = new List<Element>();

   try {

    using (DbContext context = new EntitiesContext())
    {

    DateTime dateTimeNow = DateTime.Now;
    TimeSpan timeSpanNow = DateTime.Now.TimeSpan;      
    elements = context.Elements.
                          // Some other Includes
                          //Element has a field System.DateTime DateTime
                          .Include(_ => _.DateTime)              
                          .Where(o => DbFunctions.TruncateDate(o.DateTime.Date) == dateTimeNow 
&& DbFunctions.CreateTime(o.DateTime.Hour, o.DateTime.Minute, o.DateTime.Second) <= timeSpanNow))
.ToList();


    }
}
catch(Exception ex)
{
    //logging
} 

return elements;
    }

1 个答案:

答案 0 :(得分:1)

首先,据我所知,没有DbFunctions.TruncateDate这样的东西。我认为这只是一个错字,你的意思是DbFuctions.TruncateTime

然后,您正在使用DbFunctions.TruncateTime,因为EF不了解如何将someDateTime.Date转换为SQL。通过做

DbFunctions.TruncateDate(o.DateTime.Date)

你仍然使用EF不理解的相同的东西,所以你需要摆脱Date

DbFunctions.TruncateDate(o.DateTime)