这个Linq查询有什么问题

时间:2014-11-21 12:21:26

标签: c# linq ef-code-first

var MyCours = Db.COURS.Where(C => C.CLASSE_ID == ClassID
                                        && DateTime.Now>= C.START_DATE
                                        && DateTime.Now <= C.END_DATE)
         .ToList();

有些变化仍然无效!

1 个答案:

答案 0 :(得分:4)

可能的问题是提供者无法将DateTime.Compare投射到SQL语句中。在比较方向上可能存在逻辑错误(除非您真的想要enddate < now < startdate),我还建议使用.ToList()来实现列表:

var theTimeNow = DateTime.Now;
var MyCours = Db.COURS.Where(C => C.CLASSE_ID == ClassID
                                            && theTimeNow >= C.START_DATE
                                            && theTimeNow <= C.END_DATE)
             .ToList();

DateTime.Now投影到变量中会隔离它的非确定性,即确保两个比较都是在同一时间进行。