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?