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

时间:2013-06-28 18:59:44

标签: c# linq

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

2 个答案:

答案 0 :(得分:48)

修改:如果您使用的是EntityFramework&gt; = 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();

答案 1 :(得分:3)

你可以试试这个:

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();