2011-10-24 56 views
0

我從具有合併表3數據集1

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

數據庫中裝載3個集(所有數據集具有相同的列名,相同的數據類型)實際上它們包含的數據根據​​不同的選擇條件) 現在我想所有這三個數據集中合併成一個像這樣

數據集4>表1> 18行

請幫助如何ç我這樣做

回答

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

一(靈活)的方法是使用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 
+0

爲什麼會用這個而不是'DataTable.Merge'? –

+1

在我看來,LINQ更靈活,所以如果你需要添加其他條件'合併'可能不再是一個選項,你必須放棄這種方法。這兩種方法都適用於OP的要求。 –

+0

對不起。我錯過了底線的「聯盟」。這是一個好方法。 –

1

您可以使用Tim的建議,如果你正在尋找的兩個數據集合並,所有含表,或者你可以爲特定的表格做這樣的事情。

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

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