使用AddMonth方法的LINQ to Entities

shl*_*jmi 25 c# entity-framework

这是我的代码:

 return Newsletterctx.Subscribers.Count(o =>
     o.Validated == false &&
     o.ValidationEmailSent == true &&
     o.SubscriptionDateTime.AddMonths(1) < DateTime.Now);
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

LINQ to Entities无法识别方法'System.DateTime AddMonths(Int32)'方法,并且此方法无法转换为存储表达式.

Fre*_*örk 38

也许您可以将日期改为测试而不是:

DateTime testDate = DateTime.Now.AddMonths(-1);
return Newsletterctx.Subscribers.Count
            (o => o.Validated == false 
             && o.ValidationEmailSent == true 
             && o.SubscriptionDateTime < testDate);
Run Code Online (Sandbox Code Playgroud)


小智 38

你可以使用SqlFunctions classvar;

 today =  DateTime.Now; return Newsletterctx.Subscribers.Count(o =>
 o.Validated == false &&
 o.ValidationEmailSent == true &&
 SqlFunctions.DateAdd("month",1,o.SubscriptionDateTime) <today);
Run Code Online (Sandbox Code Playgroud)

  • 我以前没见过SqlFunctions,有趣的东西. (2认同)