如何在一个DataTable中添加另一个DataTable中的列(column)? 如题 直接添加的时候会报错 “此列已属于另一个 DataTable”datarow可以用 ImportRow来解决 那column如何解决? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 等了一下午没有人回复好的方法,就自己写了一个合并的方法,也不知道好不好,如果有需要有烂的找更好的方法的就拿去用把.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]); } } 循环查询 datagridview无法自动添加行 c#windows程序运行时的配置保存位置 C#串口接收数据乱码问题 一上传到服务器后,本来本地是中文的报表就变成英文的了? 在VISTA中开发应用程序那中语言更适合? C#中怎么建立Sql Server2000的数据库备份计划 怎么验证错误?(多谢各位大虾帮忙,小女子感激不尽) 如何记住在网页上曾经输入过的帐号和密码? 請大家幫忙貼一份關於C#和Asp.Net的命名規則明細表及其它們控件的縮寫明細表。 输入两个数,如果两个数输入都大于3则请重输入,否则做其他事,程序怎么写 resources有什么用啊??
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;
}
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]);
}
}