Мне сложно соединить 2 datatables и получить объединенный файл данных .Datatables left join linq
Первые данные (метки) содержат данные, включая принтер. Второй DataTable (принтеры) содержит ссылки принтера (ID> Unc)
Я хотел бы иметь в качестве endresult (присоединенной) а DataTable со всеми данными от первого DataTable с полем (Unc) второго DataTable.
Это то, что я пытался: (ум, что фиксированные дорожки для удобства ...)
Sub Main()
Dim ds1 As new DataSet
ds1.ReadXml("C:\Program Files (x86)\[COMPANY]\ASW2XML\BICOLOR_a07bfc62-501e-4444-9b6e-3b9d3550e1a4.xml")
Dim ds2 As New DataSet
Dim li As string()
li = IO.File.ReadAllLines("C:\Program Files (x86)\[COMPANY]\ASW2XML\printers.dat")
Dim printers As New DataTable("Printers")
printers.Columns.Add("REPRT2")
printers.Columns.Add("REPRT3")
For Each s In li.ToList
Dim dr As DataRow = printers.NewRow
dr.Item(0) = s.Split("=")(0)
dr.Item(1) = s.Split("=")(1)
printers.Rows.Add(dr)
Next
printers.AcceptChanges
Dim labels As DataTable = ds1.Tables(0)
Dim joined As new DataTable("data")
'Dim lnq = From label In labels.AsEnumerable Join printer In printers.AsEnumerable On label("REPRT") Equals printer("REPRT2") Select printer
'Dim lnq = From l In labels Group Join p In printers On l Equals p("REPRT2") Into Group From p In Group Select label = l, ppath = If(p Is Nothing, "(Nothing)", p("REPRT3"))
Dim lnq = labels.AsEnumerable().Where(Function(o)printers.Select("REPRT2 =" & o.Item("REPRT").ToString).Length = 0)
joined = lnq.CopyToDataTable
End Sub
Thx за вашу помощь и вдохновение!
grtz -S-
Вы не должны жестко закодировать 'C: \ Program Files'. Есть люди, у которых нет дисков «C:». – SLaks
Я скопировал свой код из сервисного проекта, чтобы получить легкий доступ к этому коду и жестко закодировал путь к 2 файлам, потому что в службе они динамичны. Мне нужен только «волшебный» ключ, а затем поставить этот запрос linq.copytodatable в мою службу. – grmbl