如何在可空列上加入表?
我有以下 LINQ 查询,RMA.fiCharge
可以为 NULL:
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' 到类型 'Integer' 的转换无效” 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-Values(感谢 Martinho),则会生成 InvalidCastException。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