Как добавить datarow к уже существующим данным? - PullRequest
0 голосов
/ 30 августа 2011

У меня есть дата, которая уже заполнена. Теперь я хочу добавить несколько строк в эту таблицу данных, но некоторые строки могут уже существовать в таблице данных. Я знаю, что это не нужно, но это требование.

Я попробовал пару вещей и получил "строка уже существует в этой таблице: & эта строка принадлежит какой-то другой таблице". Я также попробовал importRow, но я полагаю, что избежать дубликатов по умолчанию.

Есть ли способ сделать это. Если таблица данных имеет 7 строк, и я хочу добавить еще 3 строки, независимо от того, существует она или нет. Моя цель - отправить 10 строк в вызывающую функцию.

Или вообще есть какой-то другой подход?

UPDATE

Использование rowsToAdd.CopyToDataTable(dsCount.Tables[2], LoadOption.PreserveChanges); работает, но я не уверен, что это правильный путь.

Ответы [ 5 ]

4 голосов
/ 30 августа 2011

Вы можете добавить новые строки в DataTable, используя код ниже

DataRow newRow = dataTable.NewRow();
dataTable.Rows.Add(newRow);
3 голосов
/ 30 августа 2011

Чтобы проверить наличие дубликатов, попробуйте

if (table.Rows.Contain(PriKeyTypeValue)) /*See if a Primary Key Value is in 
the table already */
    continue;
else
    table.Row.Add(value1, value2, value3);

Если вы хотите иметь возможность вставлять дублирующиеся строки, но не хотите, чтобы выбрасывалось исключение, устанавливайте свой первичный ключ как уникальный самоинкрементный int, тогда вы можете вставить столько дубликатов, сколько захотите, без необходимости проверять чтобы увидеть, если таблица содержит это значение. Просто убедитесь, что было бы достаточно иметь дубликаты. Существует множество примеров установки первичного ключа, просто найдите его (у msdn есть хотя бы один). Вот пример:

DataTable table = new DataTable();

table.Columns.Add("Column", typeof(int));

DataColumn column = table.Columns["Column"];
column.Unique = true;
column.AutoIncrement = true;
column.AutoIncrementStep = 1; //change these to whatever works for you
column.AutoIncrementSeed = 1;
table.PrimaryKey = new DataColumn[] { column };
3 голосов
/ 30 августа 2011

Создайте новую строку с помощью функции NewRow ().

var dataTable = new DataTable();
var dataRow = dataTable.NewRow();

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

dataTable.Rows.Add(dataRow)
1 голос
/ 30 августа 2011

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

DataTable table = new DataTable();    
DataRow row = table.NewRow();

table.Rows.Add(row);

Этого будет недостаточно?

0 голосов
/ 17 июля 2019

Самый простой метод. Потратив несколько часов, пробуя все остальное.

DataRow dr = ds.Tables[0].NewRow();
dr["ColumnName1"] = "columnvalue"; //string
dr["ColumnName2"] = 123 //int
ds.Tables[0].Rows.Add(dr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...