как присоединиться к таблицам на обнуляемых столбцах?
У меня следующий 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, но генерирует InvalidCastException, если вы запрашиваете какие-либо NULL-значения в целочисленном столбце (спасибо Martinho).
Модифицированный LINQ-запрос от dahlbyk работает с небольшими изменениями. 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