1

如果有日期位于两个字段之间的记录:开始和结束,我正在尝试获取结果。我的 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;

也没有任何运气。

4

1 回答 1

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

于 2013-01-22T19:22:00.427 回答