Я пытаюсь запустить следующий код. Но код ломается
Dim complaints = From comp In Me.Db.Complaints _
Let varX = GetVariations().WithVariationId(If(comp.ItemPropertyXVariationId, 0)) _
Let varY = GetVariations().WithVariationId(If(comp.ItemPropertyYVariationId, 0)) _
Select New Hogia.Retail.POS.Data.Complaint() With _
{.ItemXVariation = If(varX Is Nothing, DirectCast(String.Empty, String), varX.Name)}
.ItemXVariation является свойством строкового типа. Теперь я протестировал эту строку кода вне оператора LINQ следующим образом, и он работал нормально, вернул правильный результат, как я ожидал
Dim varXX = GetVariations().WithVariationId(0)
Dim varYY = GetVariations().WithVariationId(0)
Dim temp As New Complaint() With {.ItemXVariation = If(varXX Is Nothing, DirectCast(String.Empty, String), varXX.Name)}
Может кто-нибудь помочь мне понять, почему код в первом блоке ломается. что там не так.
Вот сообщение, которое появляется (помогите мне разобраться в этом)
Не удалось перевести выражение 'Таблица (жалоба). Выберите (comp => новый VB $ AnonymousType_2 2
(comp = comp, varX = Invoke(value(System.Func
1 [System.Linq.IQueryable 1[
Data.ItemPropertyVariation]])).WithVariationId((comp.ItemPropertyXVariationId ?? 0)))).Select($VB$It1 => new VB$AnonymousType_3
2 ($ VB $ It1 = $ VB $ It1, varY = Invoke (значение (System.Func 1[System.Linq.IQueryable
1 [Data.ItemPropertyVariation]])). WithVariationId (($ VB $ It1.comp.ItemPropertyYVariationId ?? 0)))).
Выберите ($ VB $ It => новая жалоба () {ItemXVariation =
IIF ((Преобразовать ($ VB $ Ит. $ VB $ It1.varX) = ноль), ноль, $ VB $ Ит. $ VB $ It1.varX.Name)}) '
в SQL и не может обрабатывать его как локальное выражение.