LINQ to Entities does not recognize the method 'System.TimeSpan Subtract(System.DateTime)

后端 未结 3 1792
北荒
北荒 2021-01-21 03:41

The following throws an error:

public FieldViewer GetFieldViewByFieldIDIPAndUserByDate( int fieldID, string ip, string userID, DateTime date )
{
    return this.         


        
3条回答
  •  温柔的废话
    2021-01-21 04:10

    One way to fix this is to perform that part of the filtering outside of the LINQ to Entities provider, using the LINQ to Objects provider. To do that, append a call to AsEnumerable() before that operation:

    public FieldViewer GetFieldViewByFieldIDIPAndUserByDate( int fieldID, string ip, string userID, DateTime date )
    {
        return this.context.FieldViewers.Where( x =>
                x.Field.FieldID == fieldID &&
                x.Viewer.IPAddress == ip &&
                x.Viewer.User.Id == userID)
           .AsEnumerable()
           .Where(x => date.Subtract( x.Viewer.CreatedAt ).TotalMinutes >= 10)
           .FirstOrDefault();  
    }
    

    Another way is to use one of the specialized LINQ to Entities operations, like DiffMinutes.

提交回复
热议问题