【问题标题】:Copying specific columns from one datatable to another将特定列从一个数据表复制到另一个
【发布时间】:2012-01-06 14:48:03
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    您可以克隆表,删除不需要的列,然后执行合并。感谢 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)而不是第二个循环会更好
    • @Yuriy 感谢您的建议,这样好多了。我已经更新了我的回复。
    猜你喜欢
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多