如何在可空列上加表?LINQ-在可空列上加入表
我有以下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
我得到一个在query.ToArray()
“从类型转换 '为DBNull' 到类型 '整数' 无效”:
Dim filter = _
String.Format(Services.dsERP.ERP_Charge.idChargeColumn.ColumnName & " IN({0})", String.Join(",", query.ToArray))
所以我可以在查询中附加一个WHERE RMA.fiCharge IS NOT NULL
。但如何在LINQ中做到这一点,或者有另一种选择?
预先感谢您。
解决方案:
的问题是,该数据集不支持可空类型,但如果你在查询一个整列(感谢Martinho)任何NULL值产生一个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
您使用可为空的整数吗?你为什么用linq-to-objects来标记它? LINQ到对象有**没有SQL **。 – 2011-04-17 22:29:52
不,该类型数据集中的DataColumn类型是整数。 – 2011-04-17 22:34:35
那就是你的问题。您需要可以为空的整数。 – 2011-04-17 22:37:05