发现.net好像并没有提供这样的功能,于是自己写了一个合并datatable的方法,用起来还不错
public static DataTable MergeDataTable(DataTable dt1,DataTable dt2)
{
//定义dt的行数
int dtRowCount = 0;
//dt的行数为dt1或dt2中行数最大的行数
if (dt1.Rows.Count > dt2.Rows.Count)
{
dtRowCount = dt1.Rows.Count;
}
else
{
dtRowCount = dt2.Rows.Count;
}
dt = new DataTable();
//向dt中添加dt1的列名
for (int i = 0; i < dt1.Columns.Count; i++)
{
dt.Columns.Add(dt1.Columns[i].ColumnName.ToString());
}
//向dt中添加dt2的列名
for (int i = 0; i < dt2.Columns.Count; i++)
{
dt.Columns.Add(dt2.Columns[i].ColumnName.ToString());
}
for (int i = 0; i < dtRowCount; i++)
{
row = dt.NewRow();
for (int j = 0; j < dt.Columns.Count; j++)
{
for (int k = 0; k < dt1.Columns.Count ; k++)
{
if ((dt1.Rows.Count - 1) >= i)
{
row[k] = dt1.Rows[i].ItemArray[k];
}
}
for (int k = 0; k < dt2.Columns.Count ; k++)
{
if ((dt2.Rows.Count - 1 )>= i)
{
row[dt1.Columns.Count + k] = dt2.Rows[i].ItemArray[k];
}
}
}
dt.Rows.Add(row);
}
return dt;
}
可以将你的一个ds中的Table合并完.
private void MergeDataTables()
{
dt = new DataTable();
dt = ds.Tables[0];
for (int i = 0; i < ds.Tables.Count - 1; i++)
{
dt = ClsDataHandler.MergeDataTable(dt, ds.Tables[i + 1]);
}
}