Используйте метод DataSet.Merge .Он имеет перегрузки, которые позволяют вам указать, как следует выполнять слияние, сохранять или игнорировать изменения и как обрабатывать новые столбцы.
Кроме того, если вы хотите, чтобы слияние было эффективным, убедитесь, что у вас есть первичный ключво всех таблицах, потому что DataSet создает индекс по всем строкам, используя первичный ключ.(Внутренне это RBTree)