【发布时间】:2012-01-06 14:48:03
【问题描述】:
这似乎不应该令人困惑或困难,但我很难找到这个问题的答案。我想将包含数据的列而不是行从一个大 DataTable 复制到一个较小的 DataTable。
我有一个包含许多数据列(大约 20 列)的 DataTable,以及我想要在复制的 DataTable 中的列的字符串数组 (4 )。有没有合理的方法来完成这项任务?
【问题讨论】:
标签: .net vb.net ado.net datatable
这似乎不应该令人困惑或困难,但我很难找到这个问题的答案。我想将包含数据的列而不是行从一个大 DataTable 复制到一个较小的 DataTable。
我有一个包含许多数据列(大约 20 列)的 DataTable,以及我想要在复制的 DataTable 中的列的字符串数组 (4 )。有没有合理的方法来完成这项任务?
【问题讨论】:
标签: .net vb.net ado.net datatable
您可以克隆表,删除不需要的列,然后执行合并。感谢 Yuriy 的有用评论,这大大减少了代码。
Dim columnsToKeep As String() = {"ColumnName1", "ColumnName2"}
Dim destTable As DataTable = sourceTable.Clone()
For index As Integer = destTable.Columns.Count - 1 To 0 Step - 1
Dim columnName As String = destTable.Columns(index).ColumnName
If Not columnsToKeep.Contains(columnName) Then
destTable.Columns.RemoveAt(index)
End If
Next
destTable.Merge(sourceTable, False, MissingSchemaAction.Ignore)
MissingSchemaAction.Ignore 将执行合并并忽略在sourceTable 中找到的额外列。
【讨论】:
destTable.Merge(sourceTable, false, MissingSchemaAction.Ignore)而不是第二个循环会更好