How to compare dates in LINQ?

后端 未结 3 1491
死守一世寂寞
死守一世寂寞 2020-12-17 14:16

I want to check if a given date is more than a month earlier than today\'s date using LINQ.

What is the syntax for this?

Thanks in advance.

相关标签:
3条回答
  • 2020-12-17 14:59

    Just to add, in LINQ To Entities you have to compare to a variable. Example:

            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 讨论(0)
  • 2020-12-17 15:07

    If you don't want your code to throw

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

    I would suggest using DbFunctions.AddYears. Also, if you are concerned only about dates and not the times, you could use DbFunctions.TruncateTime

    Something like this-

    DbFunctions.TruncateTime(x.date) ==
    DbFunctions.TruncateTime(DbFunctions.AddYears(DateTime.Today, 1))
    
    0 讨论(0)
  • 2020-12-17 15:18

    I assume that you're talking about in the where clause. It's basically the same way you would compare two DateTime objects elsewhere.

    using (DataContext context = new DataContext()) {
       var query = from t in context.table
                   where t.CreateDate.Date < DateTime.Today.AddMonths(-1)
                   select t;
    }
    
    0 讨论(0)
提交回复
热议问题