LINQ左连接对象引用未设置

时间:2015-04-19 09:22:53

标签: vb.net linq left-join

我试图离开加入两张桌子:

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上的错误。

为什么?

1 个答案:

答案 0 :(得分:0)

使用If(joinedrow Is Nothing, 0, joinedrow.Item(72))代替IIf

IIF不会被短路,无论joinedrow Is Nothing评估什么,都会评估真假部分。即使它只使用其中一个结果。后来在vb.net中引入了IF(...),它只会评估所需的表达式。