Как сравнить даты в 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))