2008-10-18 44 views
15

Tôi muốn kiểm tra xem một ngày cụ thể có sớm hơn một tháng so với ngày hôm nay bằng LINQ hay không.Cách so sánh ngày trong LINQ?

Cú pháp cho điều này là gì?

Xin cảm ơn trước.

Trả lời

29

Tôi giả sử bạn đang nói về mệnh đề where. Về cơ bản nó giống như cách bạn so sánh hai đối tượng DateTime ở nơi khác.

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

Chỉ cần thêm, trong LINQ thành đối tượng bạn phải so sánh với biến. Ví dụ:

 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

Nếu bạn không muốn mã của bạn để ném

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

tôi sẽ đề nghị sử dụng DbFunctions.AddYears. Ngoài ra, nếu bạn đang quan tâm chỉ khoảng ngày và không thời gian, bạn có thể sử dụng DbFunctions.TruncateTime

Something như this-

DbFunctions.TruncateTime(x.date) == 
DbFunctions.TruncateTime(DbFunctions.AddYears(DateTime.Today, 1))