Sembra che tu non voglia conservare l'intero DataTable come copia, perché hai solo bisogno di alcune righe, giusto? Se hai un criterio che puoi specificare con una selezione sulla tabella, puoi copiare solo quelle righe in un array di backup extra di DataRow come
DataRow[] rows = sourceTable.Select("searchColumn = value");
La funzione .Select () ha diverse opzioni e questa, ad esempio, può essere letta come SQL
SELECT * FROM sourceTable WHERE searchColumn = value;
Quindi puoi importare le righe che desideri come descritto sopra.
targetTable.ImportRows(rows[n])
... per qualsiasi n valido che ti piace, ma le colonne devono essere le stesse in ogni tabella.
Alcune cose che dovresti sapere su ImportRow sono che ci saranno errori durante il runtime quando usi le chiavi primarie!
Per prima cosa volevo verificare se esisteva già una riga che non è riuscita a causa di una chiave primaria mancante, ma poi il controllo è sempre fallito. Alla fine ho deciso di cancellare completamente le righe esistenti e importare di nuovo le righe che volevo.
La seconda questione ha aiutato a capire cosa succede. Il modo in cui utilizzo la funzione di importazione consiste nel duplicare le righe con una voce scambiata in una colonna. Mi sono reso conto che cambiava sempre ed era ancora un riferimento alla riga nell'array. Ho dovuto prima importare l'originale e poi modificare la voce che volevo.
Il riferimento spiega anche gli errori della chiave primaria che sono comparsi quando ho provato a importare per la prima volta la riga poiché era davvero raddoppiata.