Странный linq2sql / let bug? - PullRequest
0 голосов
/ 10 марта 2009

Может кто-нибудь объяснить, почему существует следующий запрос 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)

Работает нормально ??

1 Ответ

1 голос
/ 10 марта 2009

Так как у нас нет возможности воспроизвести его, можете ли вы определить «разрывает приложение»? Можете ли вы привести сообщение об ошибке, пожалуйста? Для информации, я иногда видел, как компилятор выражений принимает сомнительные решения об обнуляемости - подробнее см. здесь . Это может быть связано, но невозможно сказать без сообщения об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...