C# 如何在LINQ中的列上使用DATEADD-LINQ无法识别DATEADD
我试图使不到30天前回复的友谊请求无效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
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();