Có vẻ như bạn không muốn giữ toàn bộ DataTable như một bản sao, vì bạn chỉ cần một số hàng, phải không? Nếu bạn có một creteria, bạn có thể chỉ định bằng một lựa chọn trên bảng, bạn có thể chỉ sao chép các hàng đó vào một mảng dự phòng bổ sung của DataRow như
DataRow[] rows = sourceTable.Select("searchColumn = value");
Hàm .Select () có một số tùy chọn và ví dụ này có thể được đọc như một SQL
SELECT * FROM sourceTable WHERE searchColumn = value;
Sau đó, bạn có thể nhập các hàng bạn muốn như mô tả ở trên.
targetTable.ImportRows(rows[n])
... cho bất kỳ n hợp lệ nào bạn thích, nhưng các cột cần giống nhau trong mỗi bảng.
Một số điều bạn nên biết về ImportRow là sẽ có lỗi trong thời gian chạy khi sử dụng khóa chính!
Đầu tiên, tôi muốn kiểm tra xem một hàng đã tồn tại mà cũng không thành công do thiếu khóa chính, nhưng sau đó kiểm tra luôn không thành công. Cuối cùng, tôi quyết định xóa hoàn toàn các hàng hiện có và nhập lại các hàng tôi muốn.
Vấn đề thứ hai đã giúp hiểu điều gì sẽ xảy ra. Cách tôi đang sử dụng hàm nhập là sao chép các hàng với một mục được trao đổi trong một cột. Tôi nhận ra rằng nó luôn thay đổi và nó vẫn là một tham chiếu đến hàng trong mảng. Đầu tiên tôi phải nhập bản gốc và sau đó thay đổi mục nhập mà tôi muốn.
Tham chiếu cũng giải thích các lỗi khóa chính xuất hiện khi tôi lần đầu tiên cố gắng nhập hàng vì nó thực sự được tăng gấp đôi.