从运行时VB.net创建的2个数据表创建数据表

时间:2018-05-31 17:03:25

标签: vb.net datatables runtime

我有一个很长的代码,可以创建两个数据表并在运行时用数据填充它们。我需要创建一个表,但不是合并它的方式,而是像从一个数据表中添加列作为新列(但填充数据)到另一个。我可以做的最好的例子是加入SQL,但我会尝试绘制一些例子。我不能把我的代码放在这里,因为我说它太长了。

实施例: (只有列名,但想象下每个|某些|是很多行)

表1:

  • 日期| AA | AA 2 | AA3 | AA4 | AA5 | AA6 |

表2:

  • 日期| BB | BB2 | BB3 | BB4 | BB5 | BB6 |

结果:

日期| AA | AA 2 | AA3 | AA4 | AA5 | AA6 | BB | BB2 | BB3 | BB4 | BB5 | BB6 |

1 个答案:

答案 0 :(得分:1)

DataTable.Merge方法完全能够产生您想要的结果。由于您的两个表只有一个共同的列Date,我假设它至少是Table 1的PrimaryKey。

Dim dt1 As New DataTable
Dim pk As DataColumn = dt1.Columns.Add("Date", GetType(DateTime))
dt1.PrimaryKey = {pk}

dt1.Columns.Add("C1")
dt1.Columns.Add("C2")
dt1.Rows.Add(#1/1/2018#, "c1", "c2")

Dim dt2 As New DataTable
Dim pk2 As DataColumn = dt2.Columns.Add("Date", GetType(DateTime))

dt2.Columns.Add("C3")
dt2.Columns.Add("C4")
dt2.Rows.Add(#1/1/2018#, "c3", "c4")
dt2.Rows.Add(#1/2/2018#, "c3a", "c4a")

Dim dt3 As DataTable = dt1.Copy
dt3.Merge(dt2)
DataGridView1.DataSource = dt3

此代码产生以下结果:

enter image description here