如何比较LINQ中的日期?

时间:2008-10-18 02:26:55

标签: .net linq

我想使用LINQ检查给定日期是否比今天的日期早一个月。

这是什么语法?

提前致谢。

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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();
        }

答案 2 :(得分:2)

如果您不想丢弃代码

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