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