Linq中的DateDiff选项
本文关键字:选项 DateDiff 中的 Linq | 更新日期: 2023-09-27 17:55:06
我试图得到结果,如果有记录的日期落在两个字段之间:开始和结束。我的linq查询似乎没有返回任何结果:
var alerts = from q in db.AlertMsgs
where (q.Start >= DateTime.Now
&& q.Finish <= DateTime.Now)
select q;
有什么建议吗?我也试过
var alerts = from q in AlertMsgs.Where(q => q.Start.CompareTo(DateTime.Now) > 0
&& q.Finish.CompareTo(DateTime.Now) < 1)
select q;
你把条件弄反了。试一试:
var alerts = from q in db.AlertMsgs
where (q.Start < DateTime.Now && q.Finish > DateTime.Now)
select q;
或者,使用方法语法(和<=
/>=
,如果您想进行比较):
var alerts = db.AlertMsgs
.Where(q => q.Start <= DateTime.Now && q.Finish >= DateTime.Now);
这将给你所有已经开始(Start < Now
)和尚未完成(Finish > Now
)的消息。您要搜索的是尚未开始(或恰好现在开始),但已经完成(或恰好现在完成)的消息。这只会返回一个具有相同开始和结束时间的项,并且两个时间都恰好是DateTime.Now
。