【问题标题】:Whats wrong in this Linq query这个 Linq 查询有什么问题
【发布时间】:2014-11-21 12:21:25
【问题描述】:
var MyCours = Db.COURS.Where(C => C.CLASSE_ID == ClassID
                                        && DateTime.Now>= C.START_DATE
                                        && DateTime.Now <= C.END_DATE)
         .ToList();

有些改变仍然不起作用!

【问题讨论】:

  • 你得到什么错误?
  • 从数据库中获取时不能在 linq 查询中使用 DateTime 类。将 Datetime.Now 获取到某个变量并尝试在 linq 查询中使用。此外,DateTime.Compare 不能用于 liq 查询
  • 调试器只是跳过它没有错误显示!!
  • 还有 START_DATE 和 END_DATE 是 DateTime 类型吗? .

标签: c# linq ef-code-first


【解决方案1】:

一个可能的问题是提供程序无法将DateTime.Compare 投影到SQL 语句中。在比较的方向上也可能存在逻辑错误(除非你真的想要enddate &lt; now &lt; 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 投影到变量中可以隔离它的不确定性,即确保两个比较是针对同一时间的。

【讨论】:

    猜你喜欢
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 2011-10-13
    相关资源
    最近更新 更多