Linq „Nie można przetłumaczyć wyrażenia… na SQL i nie można go traktować jako lokalnego wyrażenia”.

Zacząłem odto pytanie, na co odpowiedziałemtam, a teraz zadaję tutaj bardziej fundamentalne pytanie. Uprościłem zapytanie do tego:

var q = from ent in LinqUtils.GetTable<Entity>()
        from tel in ent.Telephones.DefaultIfEmpty()
        select new {
          Name = ent.FormattedName,
          Tel = tel != null ? tel.FormattedNumber : "" // this is what causes the error
        };

tel.FormattedNumber to właściwość łączącaNumber iExtension pola w starannie sformatowany ciąg. A oto błąd, który powoduje:

System.InvalidOperationException: Could not translate expression 'Table(Entity).SelectMany(ent => ent.Telephones.DefaultIfEmpty(), (ent, tel) => new <>f__AnonymousType0`2(Name = ent.FormattedName, Tel = IIF((tel != null), tel.FormattedNumber, "")))' into SQL and could not treat it as a local expression.

Jeśli zmienię powyższe odniesienie zFormattedNumber po prostu jasneNumber, wszystko dziala.

Ale chcę, aby sformatowany numer ładnie wyświetlał się na mojej liście. Co polecasz jako najczystszy, najczystszy sposób?

questionAnswers(3)

yourAnswerToTheQuestion