【发布时间】:2015-04-10 19:00:59
【问题描述】:
我有多个要连接在一起的数据表。行跨越表而不是列。
这意味着 datatable1 可以包含第 1、2、3 列,而 datatable2 可以包含第 4、5、6 列。
我想将两者合并,以便 datatable1 具有第 1、2、3、4、5、6 列。
我觉得我已经阅读了很多示例,但仍然无法正常工作。
Private Sub mergeDataTables()
Dim primaryKeyValue As Integer
Dim tableIndex As Integer = 0
For Each t As System.Data.DataTable In dataSet.Tables
Dim pkColumn As New System.Data.DataColumn
primaryKeyValue = 0
'add column to house primary key and move it to the far left of the table
pkColumn = t.Columns.Add()
pkColumn.SetOrdinal(0)
'populate the primary key column with unique values
For Each r As System.Data.DataRow In t.Rows
r(0) = primaryKeyValue
primaryKeyValue += 1
Next
'set the primary key column as a primary key
t.PrimaryKey = {t.Columns(0)}
If tableIndex > 0 Then
For col = 1 To t.Columns.Count - 1
'assign unique column names to all columns but primary key column
t.Columns(col).ColumnName = String.Format("{0}{1}", GetExcelColumnName(tableIndex), col) 'using getexcelcolumname for no other reason that to get a unique column name 1 = a 2 = b etc
Next
dataSet.Tables(0).Merge(t)
End If
tableIndex += 1
Next
End Sub
【问题讨论】:
-
尝试在 Google 上搜索“.net join two tables”。
-
@rheitzman 我有,这就是我得到上面代码的方式。但是它并没有产生预期的结果,所以我认为我做错了什么,有人可以帮助我发现。
-
@rheitzman 您是否看到了我在 Google 搜索中会遗漏的内容?
-
我认为您要做的是 JOIN 而不是合并。您可能能够检索两个表的完整副本,创建本地 DataTables,并使用逻辑或 LINQ 根据来自表中的键值将记录连接在一起,其中 JOIN 定义了记录之间的关系。如果这是一个一次性/小型项目,您可以考虑使用 MS Access,它可以轻松访问不同数据库中的数据并对外部表的链接执行查询。
标签: .net vb.net datatable merge dataset