2011-12-12 77 views
1

我有一個DataSet,其中包含許多類似的表。我需要將所有數據表合併到一個表中。所以對於這個例子,我需要一個20行的數據表。我怎樣才能做到這一點?單個數據表中的數據集聯盟表

DataSet SampleDS = new DataSet(); 

DataTable SampleTbl1 = new DataTable(); 
SampleTbl1.Columns.Add("Product", typeof(string)); 
SampleTbl1.Columns.Add("Value", typeof(int)); 
for (int i = 0; i < 10; i++) 
{ 
    SampleTbl1.Rows.Add("Product " + i, i); 
} 

SampleDS.Tables.Add(SampleTbl1); 

DataTable SampleTbl2 = new DataTable(); 
SampleTbl2.Columns.Add("Product", typeof(string)); 
SampleTbl2.Columns.Add("Value", typeof(int)); 
for (int i = 0; i < 10; i++) 
{ 
    SampleTbl2.Rows.Add("Product " + i, i*2); 
} 

SampleDS.Tables.Add(SampleTbl2); 

回答

4

你可以做一個新的DataTable,然後兩個表到新表的導入行。

DataTable t = new DataTable(); 
t.Columns.Add("Product", typeof(string)); 
t.Columns.Add("Value", typeof(int)); 

foreach(DataTable table in SampleDS.Tables) 
{ 
if(table != null && table.Rows.Count > 0) 
{ 
for(int i = 0; i < table.Rows.Count; i ++) 
t.ImportRow(table.Rows[i]); 
} 
} 

HTH。

2

與LINQ

var table = SampleDS.Tables[0].AsEnumerable(); 

for (var ii = 1; ii < SampleDS.Tables.Count; ii++) { 
    table = table.Concat(SampleDS.Tables[ii].AsEnumerable()); 
} 
嘗試