Подтвердить что ты не робот

LINQ to Entities с методом AddMonth

Это мой код:

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

Я получаю эту ошибку:

LINQ to Entities не распознает метод 'System.DateTime AddMonths (Int32) ", и это метод не может быть переведен в хранить выражение.

4b9b3361

Ответ 1

Возможно, вы можете перенести дату, чтобы протестировать против:

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

Ответ 2

Вы можете использовать SqlFunctions classvar;

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

Ответ 3

Вы должны использовать Datetime вне запроса, потому что вы находитесь в LINQ TO ENTITIES, которые не используют System.Datetime Library.

Если вы хотите использовать дату фиксации, вы можете определить ее вне запроса как

DateTime compareDate = DateTime.Now.AddMonths(x);