如果有记录的日期介于两个字段之间,我试图获得结果:开始和结束。我所遇到的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;
没有任何运气。
答案 0 :(得分:2)
你的条件倒退了。尝试:
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
。