.Net DataTable列导出

时间:2010-02-12 10:23:54

标签: c# csv datatable split append

我希望从DataTable对象获取一个列及其所有行数据,然后在另一个数据表中创建一个新列,并使用新列及其行附加它。我一直遇到的问题是行数据会出来,列名也会出来,但是所有行都附加到同一列,我确定我错过了一些明显的东西,事实上我知道我是!任何帮助都很受欢迎。

    void GetColumns()
    {
        // add the columns to the new datatable
        foreach (int i in mapValues)
        {
            SplitData.Columns.Add(i.ToString());
        }
        // map values contains the index numbers of my target columns
        foreach (int x in mapValues)
        {

            foreach (DataRow row in OrigData.Rows)
            {
                SplitData.Rows.Add(row[mapValues[LocalIndex]]);
            }

            LocalIndex++;
        }
    }

2 个答案:

答案 0 :(得分:1)

您正在使用的DataRow.Add重载是params,因此您只需将orig列数据放在新DataTable的第一列中。

您可能需要以下内容:

DataRow newRow = SplitData.NewRow(); // gets a new blank row with the right schema
newRow[x.ToString()] = row[mapValues[LocalIndex]; // sets the column (that you created before) to the orig data
SplitData.Rows.Add(newRow);

作为第二个for循环的核心。你也可以在一个循环中完成它。

答案 1 :(得分:0)

虽然接受的答案是完全正确的,但我从中学到了一些东西,但事实证明DataTable.ImportRow方法正是我想要的,所以只是为了将来可能偶然发现的人参考。