【发布时间】:2010-06-26 00:35:10
【问题描述】:
我正在尝试运行以下代码。但是代码中断了
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(Complaint).Select(comp => new VB$AnonymousType_22
(comp = comp, varX = Invoke(value(System.Func1[System.Linq.IQueryable1[
Data.ItemPropertyVariation]])).WithVariationId((comp.ItemPropertyXVariationId ?? 0)))).Select($VB$It1 => new VB$AnonymousType_32($VB$It1 = $VB$It1, varY = Invoke (值(System.Func1[System.Linq.IQueryable1[Data.ItemPropertyVariation]])).WithVariationId(($VB$It1.comp.ItemPropertyYVariationId ?? 0))))。
Select($VB$It => new Complaint() {ItemXVariation =
IIF((转换($VB$It.$VB$It1.varX) = null), null, $VB$It.$VB$It1.varX.Name)})'
到 SQL 中,无法将其视为本地表达式。
【问题讨论】:
-
尽可能多地删除您的代码,但仍要留下足够多的代码以使问题继续发生并相应地编辑您的帖子。
标签: vb.net linq linq-to-sql