2016-09-08 30 views
0

2つのDataTableを一緒にマージする必要があります。どちらのテーブルにも「コード」というフィールドがあります。基本的に、あるテーブルに特定のコードがある場合は、他のテーブルの対応するコードとマージしてその行の値をマージします。私は内部結合を使用してSQLで2つのテーブルを一緒にマージするように言っています。vb.netの内部結合を使用して2つのDataTableをマージする

vb.netにする必要があります!

答えて

2

ここでは、このanswerのVB変換があります。

Dim dt1 As New DataTable() 
dt1.Columns.Add("CustID", GetType(Integer)) 
dt1.Columns.Add("ColX", GetType(Integer)) 
dt1.Columns.Add("ColY", GetType(Integer)) 

Dim dt2 As New DataTable() 
dt2.Columns.Add("CustID", GetType(Integer)) 
dt2.Columns.Add("ColZ", GetType(Integer)) 

For i As Integer = 1 To 5 
    Dim row As DataRow = dt1.NewRow() 
    row("CustID") = i 
    row("ColX") = 10 + i 
    row("ColY") = 20 + i 
    dt1.Rows.Add(row) 

    row = dt2.NewRow() 
    row("CustID") = i 
    row("ColZ") = 30 + i 
    dt2.Rows.Add(row) 
Next 

Dim results = From table1 In dt1.AsEnumerable()Join table2 In  dt2.AsEnumerable() On CInt(table1("CustID")) = CInt(table2("CustID"))New With { _ 
    Key .CustID = CInt(table1("CustID")), _ 
    Key .ColX = CInt(table1("ColX")), _ 
    Key .ColY = CInt(table1("ColY")), _ 
    Key .ColZ = CInt(table2("ColZ")) _ 
} 
For Each item As var In results 
    Console.WriteLine([String].Format("ID = {0}, ColX = {1}, ColY = {2}, ColZ = {3}", item.CustID, item.ColX, item.ColY, item.ColZ)) 
Next 
Console.ReadLine() 
+0

このソリューションはvb.netにありますか? – Chrisetiquette

+0

それはどうですか? –

+0

私はあなたの構文で少し失われています、私はすでに2つのDataTable、DT1とDT2内のすべてのデータを持っています。 ComboBox1.SelectedItemとComboBox2.SelectedItemを使用して2つを結びつけています。私が自分自身を非常にうまく説明していないような気がするので、それを簡単にするならば、DT1はデータリストであり、DT2はマトリックスです。私は行列に従ってDT1をコードする必要があります。ですから、DT1では、A、B、Cが入力されたコードフィールドがあります。このコードフィールドに従ってDT2(マトリックス)からデータを追加したいと思います。したがって、コードフィールドにAを含むDT1の任意のものは、コードフィールドにAを付けて行を取得します。最後に末尾に追加します。 – Chrisetiquette