使用额外列复制DataRow

时间:2016-02-15 16:00:44

标签: c# datatable datarow

我尝试使用c#向已存在的DataTable添加新列。

我能做的最好的事情是按herehere中的说明实际复制每个DataRow,但没有成功,因为这些答案明确指出DataTable必须有相同的列。每当我尝试向新列添加任何类型的值时(位于名为dt的新DataTable的末尾,我会留下具有相同行数但根本没有值的DataTable。

foreach (DataRow dr in ret.Rows)
{
    dt.Rows.Add(dr.ItemArray, "1");
}

ret是一个包含X列和N行的DataTable。

dt是一个包含X + 1列和N行的DataTable。

1 个答案:

答案 0 :(得分:1)

这可以按照要求运作:

foreach (DataRow dr in ret.Rows)
{
    DataRow row = dt.Rows.Add();
    for (int i = 0; i < dr.ItemArray.Length; i++)
        row.SetField(i, dr.ItemArray[i]);
    row.SetField(dt.Columns.Count - 1, "1");
}

另一种方法是将DefaultValue分配给最后一列,因为您总是使用相同的常量值:

dt.Columns[dt.Columns.Count - 1].DefaultValue = "1";

现在您不需要提供此值。您可以使用DataTable.Merge

dt.Merge(ret);