复制带有额外列的 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);
我正在尝试使用 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);