我想运行下面的代码。但代码中断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)}
可能有人请帮助我理解为什么在第一块断码。那里出了什么问题。
这里是出现的消息(帮我弄明白这一点)
无法翻译表达“表(投诉)。选择(补偿=>新的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(value(System.Func 1[System.Linq.IQueryable
1 [Data.ItemPropertyVariation]]))。WithVariationId(($ VB $ It1.comp.ItemPropertyYVariationId ?? 0)) ))。 Select($ VB $ It => new Complaint(){ItemXVariation = IIF((Convert($ VB $ It。$ VB $ It1.varX)= null),null,$ VB $ It。$ VB $ It1。 varX.Name)})' 到SQL中,并不能将其视为本地表达式。
除去尽可能多的代码尽可能的,但仍留下足够的问题继续出现,并相应地修改你的信息。 – jason