将表格从3个数据集合并到1

时间:2011-10-24 19:05:15

标签: asp.net dataset asp.net-4.0

我正在从数据库加载三个数据集

Dataset 1 > Table 1 > 10 rows
Dataset 2 > Table 1 > 3 rows
Dataset 3 > Table 1 > 5 rows

(所有数据集具有相同的列名,相同的数据类型)实际上它们包含基于不同选择条件的数据) 现在我想将所有三个数据集合并为一个这样的

  

数据集4>表1> 18行

请帮助我该怎么做

3 个答案:

答案 0 :(得分:3)

尝试使用DataSet.Merge Method (DataSet)方法。这样的事情(未经测试):

C#:

dataset1.Merge(dataset2);

DataSet dataset4 = dataset1.Merge(dataset3);

VB.NET:

dataset1.Merge(dataset2)

Dim dataset4 As New DataSet = dataset1.Merge(dataset3)    

答案 1 :(得分:1)

一种(灵活)方式是使用Enumerable.Union

在VB.NET中:

Dim tblMerged = tbl1.AsEnumerable _
                    .Union(tbl2.AsEnumerable) _
                    .Union(tbl3.AsEnumerable) _
                    .CopyToDataTable()

经过测试:

Dim tbl1 As New DataTable
Dim tbl2 As New DataTable
Dim tbl3 As New DataTable
Dim col1_1 As New DataColumn("Col1", GetType(String))
Dim col2_1 As New DataColumn("Col1", GetType(String))
Dim col3_1 As New DataColumn("Col1", GetType(String))

tbl1.Columns.Add(col1_1)
tbl2.Columns.Add(col2_1)
tbl3.Columns.Add(col3_1)
For i As Int32 = 1 To 10
    Dim row = tbl1.NewRow
    row(0) = "Tbl1_Value" & i
    tbl1.Rows.Add(row)
Next
For i As Int32 = 1 To 20
    Dim row = tbl2.NewRow
    row(0) = "Tbl2_Value" & i
    tbl2.Rows.Add(row)
Next
For i As Int32 = 1 To 50
    Dim row = tbl3.NewRow
    row(0) = "Tbl3_Value" & i
    tbl3.Rows.Add(row)
Next

Dim tblMerged = tbl1.AsEnumerable.Union(tbl2.AsEnumerable).Union(tbl3.AsEnumerable).CopyToDataTable

答案 2 :(得分:1)

如果你想要合并两个数据集和所有包含的表,你可以使用Tim的建议,或者你可以为特定的表做类似的事情。

DataTable table1 = new DataTable();
DataTable table2 = new DataTable();
DataTable table3 = new DataTable();

table1.Merge(table2);
table1.Merge(table3);