2008-10-18 3 views
15

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

Что такое синтаксис для этого?

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

ответ

29

Я предполагаю, что вы говорите в разделе 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

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

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

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

Что-то вроде this-

DbFunctions.TruncateTime(x.date) == 
DbFunctions.TruncateTime(DbFunctions.AddYears(DateTime.Today, 1)) 
Смежные вопросы