【问题标题】:Merge Portions of a data table into one将数据表的部分合并为一个
【发布时间】:2011-07-28 01:40:24
【问题描述】:

我有一堆数据表(在一个列表中),都有 50 列。

假设我想构建一个包含 20-29 和 40-49 列的新数据表。 然后将每个数据表中的所有行复制到新表中。但仅限于那些选定的列。

DataTable.Merge() 不起作用,因为我只想要列的子集。

实现这一目标的最佳方法是什么?

【问题讨论】:

    标签: c# datatable c#-2.0


    【解决方案1】:

    我认为在这些条件下,简单的普通 for 循环应该可以解决问题

    DataTable table = new DataTable();
    DataTable existing = listOfTables[0];
    
    for(int i = 20; i < 30; i ++)
    {
        table.Columns.Add(existing.Column[i].Name;
        table.Columns.Add(existing.Column[i + 20].Name;
    }
    
    foreach(DataTable table in listOfTables)
    {
        foreach(DataRow row in table.Rows)
        {
            DataRow newRow = table.NewRecord();
            foreach(Column column in table.Columns)
            {
               newRow[column.Name] = row[column.Name];
            }
            table.Rows.Add(row);
        }
    }
    

    注意 我还没有编译代码。

    【讨论】:

    • 是的,这段代码很好,但是,当您添加 40-49 时,它会重新添加该行,此时该行应该已经存在...
    • 我不确定你的意思,你能详细说明一下吗?我猜你在我复制行的第二部分提到了问题,对吧?
    • Copy col 20-29 工作正常,copy col 40-49 追加新行。我修好了它。 codepaste.net/nm3rvn 请参阅 AppendRecords 函数。我让它工作了!再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 2010-10-06
    相关资源
    最近更新 更多