次の LINQ ステートメントがあります。
Dim PSNum As Integer = 66
Dim InvSeq = (From invRecord In InvSeqDataSet.RptInvSeqDT.AsQueryable() _
Where IIf(invRecord.IsPack_NumNull(), False, invRecord.Pack_Num = PSNum) _
Select New With _
{.Inv = invRecord.Invoice_Num, .Seq = invRecord.Inv_Seq}).FirstOrDefault()
invRecord.Pack_Num は整数型のフィールドです。これは、アクセスしようとすると、DBNull の場合、StronglyTypedException が発生することを意味します。上記のコードは、この例外をスローします。ただし、「invRecord.Pack_Num = PSNum」を削除し、代わりに「True」などを配置すると、コードは正常に機能します。
だから私の質問は、値が実際には DBNull であるのに invRecord.IsPack_NumNull() が False を返すのはなぜですか?代わりに条件として何を使用できるのでしょうか? 私はしばらく壁に頭をぶつけていましたが、この問題の解決策が見つかりません。