У меня есть пять данных в одном наборе данных. Теперь мне нужно объединить их всех. Дело в том, что некоторые записи из таблицы1 не имеют записи в других таблицах. Поэтому мне нужно левое соединение или левое внешнее соединение. В SQL он работает следующим образом:Присоединение нескольких Datatables в LINQ с использованием Group Join
SELECT *
FROM TABLE1 LDC
LEFT JOIN TABLE2 LGDE ON LDC.KEY1 = LGDE.KEY2
LEFT JOIN TABLE3 DEFI ON LGDE.KEY3 = DEFI.KEY 4
LEFT JOIN TABLE4 SETT ON DEFI.KEY5 = SETT.KEY6
LEFT JOIN TABLE5 LST ON SETT.KEY7 = LST.KEY8
Теперь я перестроил этот оператор с LINQ в коде VB.NET. В некоторых других сообщениях я выяснил, что мне нужно использовать DefaultIfEmpty()
. Но я не мог заставить это работать. Итак, вот мой Кодекс. (Мы на .NET Framework 3.5)
Dim result = From ldc In TABLE1
Group Join lgde1 In TABLE2 On ldc.Field(Of String)("KEY1") Equals lgde1.Field(Of String)("KEY2") Into g = Group
From lgde In g.DefaultIfEmpty()
Group Join defi1 In TABLE3 On lgde.Field(Of Decimal?)("KEY3") Equals defi1.Field(Of Decimal?)("KEY4") Into g2 = Group
From defi In g2.DefaultIfEmpty()
Group Join sett1 In TABLE4 On defi.Field(Of Decimal?)("KEY5") Equals sett1.Field(Of Decimal?)("KEY6") Into g3 = Group
From sett In g3.DefaultIfEmpty()
Group Join lst1 In TABLE5 On sett.Field(Of Decimal?)("KEY7") Equals lst1.Field(Of Decimal?)("KEY8") Into g4 = Group
From lst In g4.DefaultIfEmpty()
(Выбрать часть работы, вот почему я не отправлял его)
Я всегда получаю следующее сообщение об ошибке:
Значение mustn 't be NULL. Parametername: row в System.Data.DataRowExensions.Field [T] (Datarow, row, String columnName) в строке 336.
Любая идея, почему она не работает?
С уважением
Вот и все! Большое спасибо :) – tobiwan