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