You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确合并多个DataTable?解决合并时数据下移问题

如何横向合并两个DataTable的对应行?

你当前使用DataTable.Merge()方法会将第二个表的数据作为新行追加,但这不是横向合并的正确方式。Merge方法的设计目的是合并结构相近的数据集(比如同步更新、处理重复记录),无法直接实现对应行的横向拼接。

要实现对应行横向合并,可以按以下步骤操作:

  1. 将第二个表的所有列添加到第一个表中
  2. 遍历每行数据,把第二个表对应行的列值填充到第一个表的新列里

修改后的代码如下:

public DataTable MergeTables()
{
    var dataTable1 = new DataTable();
    dataTable1.Columns.Add("Id");
    dataTable1.Columns.Add("Name");
    dataTable1.Columns.Add("Surname");
    dataTable1.Rows.Add("1", "Mike", "Tyson");
    dataTable1.Rows.Add("2", "John", "Wick");

    var dataTable2 = new DataTable();
    dataTable2.Columns.Add("Country");
    dataTable2.Columns.Add("Age");
    dataTable2.Rows.Add("America", "35");
    dataTable2.Rows.Add("Brasil", "50");

    // 第一步:将dataTable2的列添加到dataTable1
    foreach (DataColumn col in dataTable2.Columns)
    {
        dataTable1.Columns.Add(col.ColumnName, col.DataType);
    }

    // 第二步:遍历行,填充对应数据
    for (int i = 0; i < dataTable1.Rows.Count; i++)
    {
        if (i < dataTable2.Rows.Count) // 确保两个表行数一致,避免索引越界
        {
            foreach (DataColumn col in dataTable2.Columns)
            {
                dataTable1.Rows[i][col.ColumnName] = dataTable2.Rows[i][col.ColumnName];
            }
        }
    }

    return dataTable1;
}

代码说明

  • 先遍历dataTable2的列,把这些列全部添加到dataTable1中,完成结构上的横向扩展
  • 循环每一行,将dataTable2对应行的列值赋值给dataTable1的新列
  • 加入行数判断,避免当两个表行数不一致时出现索引越界问题

内容的提问来源于stack exchange,提问作者Murad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 21:50:15