我尝试使用c#向已存在的DataTable添加新列。
我能做的最好的事情是按here和here中的说明实际复制每个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。
答案 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);