复制带有额外列的 DataRow

Copy a DataRow with an extra column

我正在尝试使用 c# 将新列添加到现有的 DataTable。

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

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

ret 是一个包含 X 列和 N 行的数据表。

dt 是一个具有 X+1 列和 N 行的 DataTable。

这应该可以正常工作:

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);