null許容列のテーブルを結合する方法は?
次のLINQクエリがあります。NULLにRMA.fiCharge
することができます。
Dim query = From charge In Services.dsERP.ERP_Charge _
Join rma In Services.dsRMA.RMA _
On charge.idCharge Equals rma.fiCharge _
Where rma.IMEI = imei
Select charge.idCharge
「DBNull型から「整数」型への変換は無効です」というメッセージが表示されますquery.ToArray()
。
Dim filter = _
String.Format(Services.dsERP.ERP_Charge.idChargeColumn.ColumnName & " IN({0})", String.Join(",", query.ToArray))
だから私WHERE RMA.fiCharge IS NOT NULL
はクエリにを追加することができます。しかし、LINQでそれを行う方法はありますか、それとも別のオプションがありますか?
前もって感謝します。
解決:
問題は、DataSetがNullable-Typesをサポートしていないが、整数列でNULL値をクエリするとInvalidCastExceptionを生成することでした(Martinhoに感謝)。dahlbykからの変更されたLINQクエリは、ほとんど変更を加えずに機能します。DataSetは、AllowDbNull = True(この場合)のすべての列に対してブールプロパティを生成しますIsfiChargeNull
。
Dim query = From charge In Services.dsERP.ERP_Charge _
Join rma In (From rma In Services.dsRMA.RMA _
Where Not rma.IsfiChargeNull
Select rma)
On charge.idCharge Equals rma.fiCharge _
Where rma.IMEI = imei
Select charge.idCharge