Ich falle immer wieder darauf rein, deshalb jetzt mal zum merken! Das funktioniert nicht:
foreach (DataRow dr in table1.Rows)
table2.Rows.Add(dr);
Das führt zu einer Fehlermeldung "This row already belongs to another table.". Statt dessen muss das lauten:
foreach (DataRow dr in table1.Rows)
table2.ImportRow(dr);