来源:http://www.cnblogs.com/neru/archive/2010/06/22/1762622.html
///
/// 遍历多个表生成一个新表
///
/// 一个有多个表的集合,表可以各不相同,但主键名称要一样
///
private DataTable newdatatable(DataSet ds)
{
//遍历多个表生成一个新表
DataTable newdt = new DataTable();//要填充的新表
DataColumn newcolumn;
newcolumn = new DataColumn("id",typeof(System.String));
newdt.Columns.Add(newcolumn);
//设置主键,如果不设会有重复
newdt.PrimaryKey = new DataColumn[] { newcolumn };
DataTable middt = new DataTable();//一个中间表
DataTable clonedt =newdt.Clone();//一个中间表,以便保存新表newdt的原始状态
for(int i=0;i
{
DataTable dt = new DataTable(i.ToString());
middt.Dispose();
dt = ds.Tables[i];
if (dt != null && dt.Rows.Count > 0)
{
//操作中间表
middt = clonedt.Clone();
//先加一列
middt.Columns.Add(i.ToString(), typeof(System.String));
Object[] midArray = new Object[2];
DataRow midrow;
foreach (DataRow dtrow in dt.Rows)
{
midrow = middt.NewRow();
midArray[0] = dtrow["id"];
midArray[1] = dtrow["item"];
midrow.ItemArray = midArray;
middt.Rows.Add(midrow);
}
}
//整合到新表中
newdt.Merge(middt, false, MissingSchemaAction.Add);
}
return newdt;
}