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 中引入,它只会计算所需的表达式。