Linq按日期比较问题
本文关键字:问题 比较 日期 Linq | 更新日期: 2023-09-27 17:50:16
我的代码在这里
VisitorLog log = db.Context.VisitorLogs
.Where(vl=>vl.inDate.Date == DateTime.Now.Date).FirstOrDefault();
这个错误显示
The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported
如何在LINQ中只比较日期(skip time)
?
正确答案
var currentDate = DateTime.Now;
VisitorLog log = db.Context.VisitorLogs
.Where(vl => EntityFunctions.DiffDays(vl.inDate, currentDate) == 0).FirstOrDefault();
谢谢你的回答
您应该使用实体规范函数,请参阅此,对于所有规范函数,请参阅此。您可以使用日、年和月来解决您的问题。
不如这样做,
var currentDate = DateTime.Now.Date;
VisitorLog log = db.Context.VisitorLogs
.Where(vl=>vl.inDate.Date == currentDate).FirstOrDefault();
但是如果vl.inDate.Date包含时间,这可能会很棘手,但它不会出错,只是可能没有匹配
编辑:既然没有工作,你能在
周围尝试这个工作吗?var currentDate = DateTime.Now.Date;
var timeIn24HrsTime = DateTime.Now.AddDays(1).Date;
VisitorLog log = db.Context.VisitorLogs
.Where(vl=>vl.inDate >= currentDate && vl.inDate < timeIn24HrsTime).FirstOrDefault();
你也可以试试这个:
context.Products.Where(x=> (
EntityFunctions.TruncateTime(x.CreatedDate) >=
EntityFunctions.TruncateTime(startdate))
&& (EntityFunctions.TruncateTime(x.CreatedDate) <=
EntityFunctions.TruncateTime(enddate)))
根据您的要求你应该试试:
var currentDate = DateTime.Now;
VisitorLog log = db.Context.VisitorLogs.Where(vl =>
EntityFunctions.DiffDays(EntityFunctions.TruncateTime(vl.inDate),
EntityFunctions.TruncateTime(currentDate)) == 0).FirstOrDefault();
Try
vl.inDate.Date.Equals(DateTime.Now.Date)