ADO.NET: 如何将一个DataTable中的行批量复制到另一个表中?

问题描述 投票:0回答:1

一个遗留的应用程序正在复制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.net datatable ado.net dataset
1个回答
0
投票

怎么样?"dataTable.Copy()"

https:/docs.microsoft.comen-gbdotnetapisystem.data.datatable.copy?view=netframework-4.8。

 // Create an object variable for the copy.
    DataTable copyDataTable;
    copyDataTable = table.Copy();

0
投票

我不知道有多少,但我希望这能更快。

Dim newTable = oldTable.DefaultView.ToTable(False,
                                            {"column1",
                                             "column2",
                                             "column3"})
© www.soinside.com 2019 - 2024. All rights reserved.