【问题标题】:Weird linq2sql/let bugs?奇怪的 linq2sql/let 错误?
【发布时间】:2009-03-23 22:20:18
【问题描述】:

有人可以解释为什么存在以下 linq 查询...

(from e in db.Clients
                    let
                        log = (from f in db.CreditsafeLogs where f.Vat.Equals(e.VAT) orderby f.Sent descending select f).FirstOrDefault()
                    where
                        e.DeleteFlag.Equals("n") &&
                        e.Active == true &&
                        log != null &&
                        log.Approved == false
                    select e.Id)

编译,但在运行时中断应用程序(即使它从未被调用),虽然它是等效的

Clients
   .Select (
      e => 
         new  
         {
            e = e, 
            log = CreditsafeLogs
               .Where (f => f.Vat.Equals (e.VAT))
               .OrderByDescending (f => f.Sent)
               .FirstOrDefault ()
         }
   )
   .Where (
      temp0 => 
            (((temp0.e.DeleteFlag.Equals ("n") && (temp0.e.Active == (Boolean?)True)) && 
                  (temp0.log != null)
               ) && 
               (temp0.log.Approved == False)
            )
   )
   .Select (temp0 => temp0.e.Id)

工作正常吗??

【问题讨论】:

    标签: linq-to-sql


    【解决方案1】:

    既然我们没有办法重现它,你能定义“破坏应用程序”吗?你能引用错误信息吗?有关信息,我偶尔会看到表达式编译器对可空性做出可疑的决定 - 有关更多信息,请参阅 here。这可能是相关的,但如果没有错误消息就不可能说出来。

    【讨论】:

    • 我正在使用 Florinefx AMF 网关,问题是某些“RPC 方法”停止工作(或无法通过 Florine 找到)。
    • 不幸的是,我仍然认为这些细节不足以开始回答这个问题......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    • 2012-04-27
    • 2013-10-30
    相关资源
    最近更新 更多