如何在LINQ中的列上使用DATEADD-LINQ无法识别DATEADD

本文关键字:DATEADD-LINQ DATEADD 识别 LINQ | 更新日期: 2023-09-27 18:20:23

我试图使不到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();

CCD_ 1是CCD_。我的错误是:

LINQ无法识别该命令。AddDays

如何在LINQ中的列上使用DATEADD-LINQ无法识别DATEADD

编辑:如果使用EntityFramework>=6.0,请使用DbFunctions.AddDays。对于实体框架的旧版本,请使用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();