vb.net - 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
有更多的列,而目标是一个子集。我们可以重构代码以仅使用源,但这是一个复杂的应用程序,它需要回归测试,因为源表和目标表都是全局变量并在许多地方使用。
解决方案
我不确定多少,但我希望这会更快:
Dim newTable = oldTable.DefaultView.ToTable(False,
{"column1",
"column2",
"column3"})
推荐阅读
- regex - Posix 正则表达式的负向回溯解决方法
- image - 标签不下载图像,而图像可用
- php - 如何在 Wordpress 上禁用魔术引号
- python - 如何使用python使不能打开超过1个的应用程序可以打开超过1个
- node.js - 如何将输入数组发送到后端?
- python - django 插入 SqlLite 需要很长时间
- fluentvalidation - 升级解决方案以使用 FluentValidation Ver 10 异常问题
- vim - 使用 Next.js 在 Vim Coc-tsserver 上自动导入
- c++ - QGraphicsView 当图像小于视图时将图像缩放到光标
- regex - 在 Coldfusion 中删除括号之间的数据