我有一个包含许多类似表的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);
答案 0 :(得分: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。
答案 1 :(得分:2)
尝试使用LINQ
var table = SampleDS.Tables[0].AsEnumerable();
for (var ii = 1; ii < SampleDS.Tables.Count; ii++) {
table = table.Concat(SampleDS.Tables[ii].AsEnumerable());
}