首页 > 解决方案 > ADO.NET:如何将 DataTable 中的行批量复制到另一个

问题描述

一个遗留应用程序正在将 100K 记录复制DataTable到另一个中,如下所示:

For index = 0 To dataTable.Rows.Count() - 1
    Dim column1 = CType(dataTable.Rows(index).Item("column1"), Integer)
    Dim column2 = CType(dataTable.Rows(index).Item("column2"), Integer)
    Dim column3 = CType(dataTable.Rows(index).Item("column3"), Integer)

    Dim dataRow = ds.Tables("MyTable").NewRow

    dataRow("column1") = column1
    dataRow("column2") = column2
    dataRow("column3") = column3

    ds.Tables("MyTable").Rows.Add(dataRow)
Next

这似乎很慢,因为我们需要迭代 100K 次并添加新行。是否有任何 .NET API 可以批量复制行以减少复制所有内容所需的时间?源DataTable有更多的列,而目标是一个子集。我们可以重构代码以仅使用源,但这是一个复杂的应用程序,它需要回归测试,因为源表和目标表都是全局变量并在许多地方使用。

标签: vb.netdatatableado.netdataset

解决方案


我不确定多少,但我希望这会更快:

Dim newTable = oldTable.DefaultView.ToTable(False,
                                            {"column1",
                                             "column2",
                                             "column3"})

推荐阅读