[英]LINQ to Entities - Comparing Dates
是否有更好(更好/更有效)的方法来做到这一点?
return View(db.Things
.Where(t => t.DateTimeObj.Month == DateTime.Today.Month
&& t.DateTimeObj.Day == DateTime.Today.Day)
.OrderByDescending(e => e.DateTimeObj)
.Take(num)
);
以下不起作用(LINQ to Entites中没有Date对象)。
今日记录:
return View(db.Things
.Where(t => t.DateTimeObj.Date == DateTime.Today)
.OrderByDescending(e => e.DateTimeObj)
.Take(num)
);
过去24小时记录:
return View(db.Things
.Where(t => t.DateTimeObj > DateTime.Today.AddHours(-24))
.OrderByDescending(e => e.DateTimeObj)
.Take(num)
);
编辑:
这似乎可以解决问题:
return View(db.Things
.Where(t => t.DateTimeObj > SqlFunctions.DateAdd("dd", -1, DateTime.Now))
.OrderByDescending(e => e.DateTimeObj)
.Take(num)
);
Chris Sainty指出的可能的陷阱:
看一下msdn上的SqlFunctions类,它提供了对sql datediff等函数的访问。
请注意,它们不能用于在C#中运行代码,它们只是查询解析器理解并可以转换为T-SQL的占位符。 显然这只是SQL Server,除非其他提供程序包装了这些函数。
只需在此之前声明您的“比较”日期
var today = DateTime.Today;
return View(db.Things
.Where(t => t.DateTimeObj.Date == today)
.OrderByDescending(e => e.DateTimeObj)
.Take(num)
);
//Last 24 hours records:
var yesterday = DateTime.Now.AddDays(-1);
return View(db.Things
.Where(t => t.DateTimeObj > yesterday)
.OrderByDescending(e => e.DateTimeObj)
.Take(num)
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.