Похоже, вы не хотите хранить весь DataTable как копию, потому что вам нужны только несколько строк, верно? Если у вас есть критерия, которую вы можете указать с помощью выбора в таблице, вы можете скопировать только эти строки в дополнительный резервный массив DataRow, например
DataRow[] rows = sourceTable.Select("searchColumn = value");
У функции .Select () есть несколько опций, и этот, например, можно читать как SQL
SELECT * FROM sourceTable WHERE searchColumn = value;
Затем вы можете импортировать нужные строки, как описано выше.
targetTable.ImportRows(rows[n])
... для любого допустимого n, которое вам нравится, но столбцы должны быть одинаковыми в каждой таблице.
Некоторые вещи, которые вы должны знать об ImportRow, заключаются в том, что во время выполнения при использовании первичных ключей будут возникать ошибки!
Сначала я хотел проверить, существует ли уже строка, что также не удалось из-за отсутствия первичного ключа, но тогда проверка всегда терпела неудачу. В конце концов я решил полностью очистить существующие строки и снова импортировать нужные строки.
Вторая проблема действительно помогла понять, что происходит. Я использую функцию импорта для дублирования строк с замененной записью в одном столбце. Я понял, что он всегда менялся и по-прежнему оставался ссылкой на строку в массиве. Сначала мне пришлось импортировать оригинал, а затем изменить запись, которую я хотел.
В справочнике также объясняются ошибки первичного ключа, которые возникли, когда я впервые попытался импортировать строку, поскольку она действительно была увеличена вдвое.
person
Bolle
schedule
24.02.2020