LINQ to Entities с методом AddMonth - PullRequest
       2

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

25 голосов
/ 20 августа 2010

Это мой код:

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

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

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

Ответы [ 3 ]

36 голосов
/ 30 декабря 2011

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

 today =  DateTime.Now; return Newsletterctx.Subscribers.Count(o =>
 o.Validated == false &&
 o.ValidationEmailSent == true &&
 SqlFunctions.DateAdd("month",1,o.SubscriptionDateTime) <today);
36 голосов
/ 20 августа 2010

Возможно, вместо этого вы можете изменить дату для проверки:

DateTime testDate = DateTime.Now.AddMonths(-1);
return Newsletterctx.Subscribers.Count
            (o => o.Validated == false 
             && o.ValidationEmailSent == true 
             && o.SubscriptionDateTime < testDate);
1 голос
/ 12 мая 2015

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...