Могу ли я добавить один и тот же DataRow в DataTable несколько раз?

если у меня есть DataTable и вы хотите создать новую строку, я сначала вызываю DataTable.NewRow() который возвращает DataRow. Затем эта строка имеет схемы таблицы, и я могу установить значение каждого поля в строке. На этом этапе таблица "знает" о строке, или это происходит только после вызова DataTable.Rows.Add(DataRow row)?

если я называю DataTable.Rows.Add() более одного раза создаются повторяющиеся строки в таблице данных с повторяющимися значениями?

Почему я спрашиваю, я пытаюсь написать рекурсивную функцию это приведет к итерации вниз по древовидной структуре и заполнению DataTable значениями. Поэтому у меня есть ситуации, когда строки, создаваемые для каждого ребенка, будут иметь столбцы с одинаковыми значениями, потому что они исходят от родителя.

Итак, моя идея состояла в том, чтобы передать DataRow с информацией родителя каждому ребенку. Ребенок добавит свою информацию, а затем добавит строку в таблицу. Но я пытаюсь понять, нужно ли мне звонить DataTable.NewRow() для каждого ребенка, или если будут созданы новые строки автоматически, если я добавляю одну и ту же строку несколько раз.

4 ответов


нет, но легко скопировать строку, чтобы вы могли получить то, что хотите (предполагается, что существующая строка находится в переменной existingRow):

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

да, старый вопрос. Но ответ Майкла работает. Мне нужно было добавить несколько повторяющихся строк в 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.


нет, он будет генерировать исключение типа System.Исключение ArgumentException.


Я рекомендую вам поместить данные в массив, а затем добавить данные в таблицу данных например,

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

newdatarow будет генерировать исключение, ошибка