【发布时间】:2008-10-18 02:26:55
【问题描述】:
我想使用 LINQ 检查给定日期是否比今天早一个月以上。
这是什么语法?
提前致谢。
【问题讨论】:
我想使用 LINQ 检查给定日期是否比今天早一个月以上。
这是什么语法?
提前致谢。
【问题讨论】:
我假设您在 where 子句中谈论。这与您在其他地方比较两个 DateTime 对象的方式基本相同。
using (DataContext context = new DataContext()) {
var query = from t in context.table
where t.CreateDate.Date < DateTime.Today.AddMonths(-1)
select t;
}
【讨论】:
只是补充一点,在 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();
}
【讨论】:
如果你不想让你的代码抛出
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))
【讨论】: