单个数据表中的数据集联合表

时间:2011-12-12 02:55:54

标签: c# asp.net

我有一个包含许多类似表的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);

2 个答案:

答案 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());
}