【问题标题】:How to get one datatable with two columns from another datatable with many columns in C#如何在 C# 中从另一个具有多列的数据表中获取一个具有两列的数据表
【发布时间】:2014-12-03 15:16:43
【问题描述】:

我有一个 15 列多行的数据表,我需要创建一个新的数据表,它只有 15 列中的三列,并将原始数据表中的所有相应数据复制到第二个数据表。

我一直在寻找答案,我找到的最接近的是以下 URL。但是我使用 SO 解决方案的问题是我需要删除 12 列才能获得我想要的 3 列,因为 SO 解决方案是删除列。

有没有更简单的方法来做到这一点?任何提示将不胜感激。我不知道 LINQ(也许这是一个 LINQ 问题,我不知道)而且我是一名中级 C# 程序员。感谢您的帮助。

SO Solution That is close to what I need

稍后编辑:This Solved My Problem 非常感谢@Tim Schmelter 的回复,在我发布这个问题后,我看到最终我需要做的是复制最终的数据表(三列) 到 dataGridView (已经有三列)。所以我的问题是如何将具有 15 列的数据表复制到具有 3 列的 DataGridView。我通过查看 Nomi Ali 在我帖子的第二个 SO 链接中的评论找到了答案。我只是在 DataGridView 上将 AutoGenerateColumn 设置为 False。这解决了我的问题。但是,我会尝试@Tim Schmelter 的答案,如果可行,我会将其标记为答案。

【问题讨论】:

    标签: c# select datatable


    【解决方案1】:

    也许您可以定义一个白名单并使用 LINQ:

    string[] wantedColumns = { "Column1", "Column2", "Column3" }; // for example
    DataTable secondTable = firstTable.Copy();
    var removeColumns = secondTable.Columns.Cast<DataColumn>()
        .Where(col => !wantedColumns.Contains(col.ColumnName, StringComparer.InvariantCultureIgnoreCase))
        .ToList();
    removeColumns.ForEach(c => secondTable.Columns.Remove(c));
    

    【讨论】:

    • 我必须删除 12 列。我什至不知道所有 15 列的名称。
    • @user1298925,如果您不知道要删除哪些列,您将如何实际上删除它们?你知道列索引吗?
    猜你喜欢
    • 1970-01-01
    • 2017-12-31
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多