Я пытаюсь запустить следующий код. Но код разрываLinqToSql - Немного странное поведение
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)}
Может кто-то пожалуйста, помогите мне понять, почему код в первый блок перерывов. что там не так.
Вот сообщение, которое приходит (помочь мне разобраться в этом)
Не удалось перевести выражение «Table (Жалоба) .Select (комп => новый 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 $ It. $ VB $ It1.varX) = null), null, $ VB $ It. $ VB $ It1. varX.Name)}) ' в SQL и не может рассматривать его как локальное выражение.
Удалить столько кода, как это возможно, но оставляя достаточно того, что проблема продолжает возникать и редактировать свой пост, соответственно. – jason