c#,写一个循环,每次查出来的datatable,都累加到新的datatable里

在C#中,可以使用DataTable.Merge方法来将多个DataTable合并到一个新的DataTable中。以下是一个示例代码,展示如何在循环中将每次查询得到的DataTable累加到一个新的DataTable里:

using System;
using System.Data;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        // 创建一个新的DataTable用于存储最终结果
        DataTable resultTable = new DataTable();

        // 模拟循环查询,这里假设循环3次
        for (int i = 0; i < 3; i++)
        {
            // 模拟从数据库中查询得到的DataTable
            DataTable queryTable = GetDataTableFromDatabase(i);

            // 如果resultTable为空,则直接复制结构和数据
            if (resultTable.Columns.Count == 0)
            {
                resultTable = queryTable.Clone(); // 复制结构
                resultTable.Merge(queryTable);    // 合并数据
            }
            else
            {
                // 如果resultTable已经有数据,则直接合并
                resultTable.Merge(queryTable);
            }
        }

        // 输出最终结果
        foreach (DataRow row in resultTable.Rows)
        {
            foreach (var item in row.ItemArray)
            {
                Console.Write(item + "\t");
            }
            Console.WriteLine();
        }
    }

    // 模拟从数据库中查询得到的DataTable
    static DataTable GetDataTableFromDatabase(int queryIndex)
    {
        DataTable table = new DataTable();
        table.Columns.Add("Id", typeof(int));
        table.Columns.Add("Name", typeof(string));
        table.Columns.Add("Value", typeof(int));

        // 模拟查询结果
        for (int i = 0; i < 3; i++)
        {
            table.Rows.Add(queryIndex * 3 + i, $"Name{queryIndex * 3 + i}", queryIndex * 3 + i);
        }

        return table;
    }
}

  

代码说明:

  1. resultTable:用于存储最终合并后的数据。
  2. GetDataTableFromDatabase:模拟从数据库中查询得到的DataTable。在实际应用中,这里可以替换为从数据库中执行查询并返回DataTable的代码。
  3. Merge方法:用于将一个DataTable的数据合并到另一个DataTable中。如果目标DataTable为空,则会复制结构和数据;如果目标DataTable已经有数据,则会将新数据追加到目标表中。

注意事项:

  • 如果每次查询的DataTable结构不同(例如列名或数据类型不同),在合并时可能会抛出异常。确保所有要合并的DataTable具有相同的结构。
  • 如果查询数据量较大,建议在合并时注意性能优化,例如分批处理数据。
posted @ 2025-12-22 14:06  yinghualeihenmei  阅读(1)  评论(0)    收藏  举报