Please help me. This is my first LINQ.
I have two datatables and I need to join on two fields.
How do I do this?
I tried the folowing but The join does not work. Error on "yk.Field(Of String)("secNo")" and the message is "Anonymous type member name can be inferred only from a simple or qualified name with no arguments"
Dim dtYk As DataTable = New DataTable("dtYk")
dtYk.Columns.Add("secNo")
dtYk.Columns.Add("BomLine")
dtYk.Rows.Add("EA(1)", 1)
dtYk.Rows.Add("EA(8)", 17)
Dim dtIvt As DataTable = New DataTable("dtIvt")
dtIvt.Columns.Add("secNo")
dtIvt.Columns.Add("BomLine")
dtIvt.Columns.Add("PartCode")
dtIvt.Rows.Add("EA(1)", 1, "TRML07-32-LH-ASSY**")
dtIvt.Rows.Add("EA(8)", 17, "328")
' Create a DataSet. Put both tables in it.
Dim dsYk As DataSet = New DataSet("dsYk")
dsYk.Tables.Add(dtYk)
Dim dsIvt As DataSet = New DataSet("dsIvt")
dsIvt.Tables.Add(dtIvt)
Dim LinQuery = From yk In dtYk.AsEnumerable
Join ivt In dtIvt.AsEnumerable
On New With {yk.Field(Of String)("secNo") , yk.Field(Of String)("BomLine")} Equals New With {ivt.Field(Of String)("secNo") , ivt.Field(Of String)("BomLine")}
Select New With {yk.Field(Of String)("secNo") , yk.Field(Of String)("BomLine"),ivt.Field(Of String)("secNo")}
this is a simple version that works. But this only joins on one field and select only one table.
Dim LinQuery = From yk In dtYk.AsEnumerable()
Join ivt In dtIvt.AsEnumerable()
On yk.Field(Of String)("secNo") Equals ivt.Field(Of String)("secNo")
Select yk
Dim dt As New DataTable
dt = LinQuery.CopyToDataTable
my goal is to join on two fields and the select should be yk.SecNo, yk.BomLine and ivt.PartCode. Please help. Thank you