首页 文章

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

提问于
浏览
7

如果我有一个DataTable并且想要创建一个新行,我首先调用 DataTable.NewRow() ,它返回一个DataRow . 然后该行具有表的模式,我可以设置行中每个字段的值 . 在这一点上关于Row的表是"know",还是仅在我调用 DataTable.Rows.Add(DataRow row) 之后才会发生?

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

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

所以我的想法是传递一个DataRow与父's information to each child. The child would add its information and then add the row to the table. But I' m试图弄清楚我是否需要为每个孩子调用 DataTable.NewRow() ,或者如果我多次添加同一行将自动创建新行 .

4 回答

  • 15

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

    var newRow = dataTable.NewRow();
    newRow.ItemArray = existingRow.ItemArray;
    dataTable.Rows.Add(newRow);
    
  • 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");
    }
    

    搜索谷歌这很糟糕,因为大多数人想删除 DataTable 中的重复行,而不是在 DataTable 中添加重复的行 .

  • -1

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

  • 0

    我建议您将数据放入一个数组中,然后将数据添加到数据表中,例如

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

    newdatarow 将生成异常错误

相关问题