我希望从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++;
}
}
答案 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方法正是我想要的,所以只是为了将来可能偶然发现的人参考。