如何从C#中具有多列的另一个数据表中获取具有两列的一个数据表

时间:2014-12-03 15:16:44

标签: c# select datatable

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

我找到了答案,我找到的最接近的是以下网址。但是我使用SO解决方案的问题是我需要删除12列以获得我想要的3个列,因为SO解决方案是删除列。

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

SO Solution That is close to what I need

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

1 个答案:

答案 0 :(得分: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));