Рассмотрим решение, которое будет аккуратно обрабатывать произвольное количество таблиц.
//ASSUMPTION: All tables must have the same columns
var tables = new List<DataTable>();
tables.Add(oneTableToRuleThemAll);
tables.Add(oneTableToFindThem);
tables.Add(oneTableToBringThemAll);
tables.Add(andInTheDarknessBindThem);
//Or in the real world, you might be getting a collection of tables from some abstracted data source.
//behold, a table too great and terrible to imagine
var theOneTable = tables.SelectMany(dt => dt.AsEnumerable()).CopyToDataTable();
Инкапсулировано в помощник для дальнейшего использования:
public static DataTable CombineDataTables(params DataTable[] args)
{
return args.SelectMany(dt => dt.AsEnumerable()).CopyToDataTable();
}
Просто есть несколько таблиц, объявленных в коде?
var combined = CombineDataTables(dt1,dt2,dt3);
Хотите объединить в одну из существующих таблиц вместо создания новой?
dt1 = CombineDataTables(dt1,dt2,dt3);
Уже есть коллекция таблиц, вместо объявленных одна за другой?
//Pretend variable tables already exists
var tables = new[] { dt1, dt2, dt3 };
var combined = CombineDataTables(tables);