这是我的代码:
return Newsletterctx.Subscribers.Count(o =>
o.Validated == false &&
o.ValidationEmailSent == true &&
o.SubscriptionDateTime.AddMonths(1) < DateTime.Now);
我收到此错误:
LINQ to Entities无法识别 方法'System.DateTime AddMonths(Int32)'方法,这个 方法无法翻译成 商店表达。
答案 0 :(得分:36)
也许您可以将日期改为测试而不是:
DateTime testDate = DateTime.Now.AddMonths(-1);
return Newsletterctx.Subscribers.Count
(o => o.Validated == false
&& o.ValidationEmailSent == true
&& o.SubscriptionDateTime < testDate);
答案 1 :(得分:35)
您可以使用SqlFunctions classvar;
today = DateTime.Now; return Newsletterctx.Subscribers.Count(o =>
o.Validated == false &&
o.ValidationEmailSent == true &&
SqlFunctions.DateAdd("month",1,o.SubscriptionDateTime) <today);
答案 2 :(得分:1)
您必须在请求之外使用Datetime,因为您位于不使用System.Datetime Library的LINQ TO ENTITIES中。
如果您希望使用修复日期,可以在请求之外将其定义为
DateTime compareDate = DateTime.Now.AddMonths(x);
答案 3 :(得分:0)
现在,上面的EntityFramework,Version = 6,您可以使用 System.Data.Entity.DbFunctions
return Newsletterctx.Subscribers.Count(o =>
o.Validated == false &&
o.ValidationEmailSent == true &&
DbFunctions.AddMonths(o.SubscriptionDateTime,1) < DateTime.Now);
但是,在这种情况下,请使用FredrikMörk回答的临时变量testDate使用更少的资源。