【问题标题】:How to compare dates in LINQ?如何比较 LINQ 中的日期?
【发布时间】:2008-10-18 02:26:55
【问题描述】:

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

这是什么语法?

提前致谢。

【问题讨论】:

    标签: .net 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))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-12-03
          • 1970-01-01
          • 1970-01-01
          • 2021-05-01
          • 1970-01-01
          • 2012-02-07
          • 2016-04-04
          • 1970-01-01
          相关资源
          最近更新 更多