LINQ 左联接对象引用未设置
LINQ left join object reference not set
我正在尝试左连接两个表:
Dim ausartpreise = From ausart In wpneu.Dataset.Tables(1).AsEnumerable
Group Join wp In wpneu.Dataset.Tables(0).AsEnumerable On ausart.Item(2) Equals wp.Item(0) _
And ausart.Item(3) Equals wp.Item(2)
Into joined_res = Group From joinedrow In joined_res.DefaultIfEmpty _
Select New With {.artnr = ausart.Item(0), .lfdnrkal = ausart.Item(1), .artnrhz = ausart.Item(2), .lfdnr1 = ausart.Item(3), _
.menge = ausart.Item(4), .m = ausart.Item(5), .wpneu = IIf(joinedrow Is Nothing, 0, joinedrow.Item(72))}
如你所见,如果没有匹配项,我会抓到。但尽管如此,我在 joinedrow
.
上收到 'object reference not set' 错误
为什么?
使用If(joinedrow Is Nothing, 0, joinedrow.Item(72))
代替IIf
IIF
没有短路,无论 joinedrow Is Nothing
求值是什么,都会求值 true 和 false 部分。即使它只会使用其中一个结果。 IF(...)
稍后在 vb.net 中引入,它只会计算所需的表达式。
我正在尝试左连接两个表:
Dim ausartpreise = From ausart In wpneu.Dataset.Tables(1).AsEnumerable
Group Join wp In wpneu.Dataset.Tables(0).AsEnumerable On ausart.Item(2) Equals wp.Item(0) _
And ausart.Item(3) Equals wp.Item(2)
Into joined_res = Group From joinedrow In joined_res.DefaultIfEmpty _
Select New With {.artnr = ausart.Item(0), .lfdnrkal = ausart.Item(1), .artnrhz = ausart.Item(2), .lfdnr1 = ausart.Item(3), _
.menge = ausart.Item(4), .m = ausart.Item(5), .wpneu = IIf(joinedrow Is Nothing, 0, joinedrow.Item(72))}
如你所见,如果没有匹配项,我会抓到。但尽管如此,我在 joinedrow
.
为什么?
使用If(joinedrow Is Nothing, 0, joinedrow.Item(72))
代替IIf
IIF
没有短路,无论 joinedrow Is Nothing
求值是什么,都会求值 true 和 false 部分。即使它只会使用其中一个结果。 IF(...)
稍后在 vb.net 中引入,它只会计算所需的表达式。