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

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

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

Спасибо заранее.

Ответы

Ответ 1

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

using (DataContext context = new DataContext()) {
   var query = from t in context.table
               where t.CreateDate.Date < DateTime.Today.AddMonths(-1)
               select t;
}

Ответ 2

Просто добавьте в 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();
        }

Ответ 3

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

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))