如何在可空列上加表?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