如何在LINQ中使用DATEADD over column – LINQ无法识别DateAdd

我试图使不到30天前被请求的友谊请求无效。

var requestIgnored = context.Request .Where(c => c.IdRequest == result.IdRequest && c.IdRequestTypes == 1 && c.Accepted == false && DateTime.Now <= (((DateTime)c.DateResponse).AddDays(30))) .SingleOrDefault(); 

c.DateResponse的类型是DateTime? 。 我遇到的错误是:

LINQ无法识别命令.AddDays

编辑:如果您使用的是EntityFramework> = 6.0,请使用DbFunctions.AddDays 。 对于旧版本的Entity Framework,请使用EntityFunctions.AddDays

 var requestIgnored = context.Request .Where(c => c.IdRequest == result.IdRequest && c.IdRequestTypes == 1 && c.Accepted == false && DateTime.Now <= DbFunctions.AddDays(c.DateResponse, 30)) .SingleOrDefault(); 

你可以试试这个:

 var thirtyDaysAgo = DateTime.Now.AddDays(-30); var requestIgnored = context.Request .Where(c => c.IdRequest == result.IdRequest && c.IdRequestTypes == 1 && c.Accepted == false && c.DateResponse.HasValue && thirtyDaysAgo <= c.DateResponse.Value) .SingleOrDefault();