Как сравнить даты в LINQ? - PullRequest
       9

Как сравнить даты в LINQ?

15 голосов
/ 18 октября 2008

Я хочу проверить, является ли данная дата более чем на месяц раньше, чем сегодняшняя дата, используя LINQ.

Какой синтаксис для этого?

Заранее спасибо.

Ответы [ 3 ]

29 голосов
/ 18 октября 2008

Я предполагаю, что вы говорите в предложении where. Это в основном так же, как если бы вы сравнивали два объекта DateTime в другом месте.

using (DataContext context = new DataContext()) {
   var query = from t in context.table
               where t.CreateDate.Date < DateTime.Today.AddMonths(-1)
               select t;
}
5 голосов
/ 17 января 2012

Просто добавьте, в LINQ To Entities вы должны сравнить с переменной. Пример:

        DateTime lastMonth = DateTime.Today.AddMonths(-1);
        using (var db = new MyEntities())
        {
            var query = from s in db.ViewOrTable
                        orderby s.ColName
                        where (s.StartDate > lastMonth)
                        select s;

            _dsResults = query.ToList();
        }
2 голосов
/ 23 мая 2017

Если вы не хотите, чтобы ваш код выдавал

LINQ to Entities does not recognize the method 'System.DateTime AddYears(Int32)' method, and this method cannot be translated into a store expression.

Я бы предложил использовать DbFunctions.AddYears. Кроме того, если вас интересуют только даты, а не время, вы можете использовать DbFunctions.TruncateTime

Как-то так ...

DbFunctions.TruncateTime(x.date) ==
DbFunctions.TruncateTime(DbFunctions.AddYears(DateTime.Today, 1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...