我可以多次向DataTable添加相同的DataRow吗?

时间:2009-08-26 04:06:23

标签: ado.net recursion datatable dataset

如果我有一个DataTable并且想要创建一个新行,我首先调用DataTable.NewRow(),它返回一个DataRow。然后该行具有表的模式,我可以设置行中每个字段的值。此时表格是否“知道”Row,或者仅在我致电DataTable.Rows.Add(DataRow row)后才会发生?

如果我再次调用DataTable.Rows.Add(),那么在数据表中创建的重复行是否有重复值?

我问的原因是我正在尝试编写一个递归函数,它将迭代树结构并用值填充DataTable。因此,我有这样的情况:为每个子项创建的行将具有具有所有相同值的列,因为它们来自父项。

所以我的想法是将带有父母信息的DataRow传递给每个孩子。孩子将添加其信息,然后将行添加到表中。但我想知道是否需要为每个孩子调用DataTable.NewRow(),或者如果我多次添加同一行,将自动创建新行。

4 个答案:

答案 0 :(得分:15)

不,但是复制一行很容易,你可以得到你想要的东西(假设现有的行在名为existingRow的变量中):

var newRow = dataTable.NewRow();
newRow.ItemArray = existingRow.ItemArray;
dataTable.Rows.Add(newRow);

答案 1 :(得分:1)

是的,老问题。但是迈克尔的答案确实有用。我需要将多个重复行添加到调度应用程序的DataTable中。使用dt.Rows.Add(_Users)时出现错误:

  

该行已经属于该表

但是使用此功能,我可以循环浏览并根据需要保留任意数量的职位空缺,其中“长度”是应聘职位的空缺数量:

int Length = int.Parse(TextBox6.Text.Trim());
for (int i = 0; i < Length; i++)
{
  Users.Rows.Add("9999", "Open");
}

在Google上搜索此操作很糟糕,因为大多数人都想删除DataTable中的重复行,而不是添加DataTable中的重复行。

答案 2 :(得分:0)

不,它会生成System.ArgumentException类型的异常。

答案 3 :(得分:-1)

我建议您将数据放入数组中,然后将数据添加到数据表中 e.g。

yourDataTable.Rows.Add(data[0]........);

newdatarow将生成异常错误