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

C# 如何在LINQ中的列上使用DATEADD-LINQ无法识别DATEADD,c#,linq,C#,Linq,我试图使不到30天前回复的友谊请求无效 var requestIgnored = context.Request .Where(c => c.IdRequest == result.IdRequest && c.IdRequestTypes == 1 && c.Accepted == false && DateTime.Now <= (((Dat

我试图使不到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();
var requestIgnored=context.Request
。其中(c=>c.IdRequest==result.IdRequest
&&c.IdRequestTypes==1
&&c.已接受==错误
&&DateTime.Now您可以尝试以下方法:

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();
var thirtyDaysAgo=DateTime.Now.AddDays(-30);
var requestIgnored=context.Request
.其中(c=>
c、 IdRequest==result.IdRequest&&
c、 IdRequestTypes==1&&
c、 已接受==false&&
c、 DateResponse.HasValue&&

三十天Sago编辑:如果您使用的是EntityFramework>=6.0,请使用。对于EntityFramework的旧版本,请使用:

var requestIgnored=context.Request
。其中(c=>c.IdRequest==result.IdRequest
&&c.IdRequestTypes==1
&&c.已接受==错误

&&DateTime。现在你在使用什么LinqProvider?对于L2E来说:EntityFunctions对我来说是一个新的世界!!谢谢!!效果非常好。然后你应该“接受为答案”。勾选答案旁边的复选标记。这将为帮助您和帮助他人快速找到正确答案的人提供奖励。请注意,
EntityFunctions
仅在EF上下文中起作用。尝试评估该方法(即在用于单元测试的本地集合上)将引发异常。刚刚找到这篇文章并实现了上面的代码,指示System.Data.Entity.Core.Objects.EntityFunctions现在已过时,并被System.Data.Entity.DbFunctions替换。谢谢@BrettRigby,我已经更新了EF 6的答案
var requestIgnored = context.Request
    .Where(c => c.IdRequest == result.IdRequest 
             && c.IdRequestTypes == 1 
             && c.Accepted == false 
             && DateTime.Now <= DbFunctions.AddDays(c.DateResponse, 30))
   .SingleOrDefault();