将特定列从一个数据表复制到另一个数据表

时间:2011-11-25 20:25:16

标签: .net vb.net ado.net datatable

这似乎不应该令人困惑或困难,但我很难找到这个问题的答案。我想将数据而不是行的列从一个大型DataTable复制到一个较小的DataTable。

我有一个包含许多数据列的DataTable(大约20个),以及我想要在复制的DataTable中的列(4)的字符串数组。有没有合理的方法来完成这项任务?

1 个答案:

答案 0 :(得分:6)

您可以克隆表,删除不需要的列,然后执行合并。感谢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中找到的额外列。