Wenn man eine DataRow aus einer DataTable eines DataSets in eine andere DataTable kopieren möchte, geht man durch die entsprechenden DataTable und kopiert diese.
1 2 3 4 | foreach (DataRow row in kundeDataTable.Rows) { dataSetResult.Tables["Kunde"].ImportRow(row); } |
Um sich ein paar Zeilen zu sparen, kann man an das DataRow Array eine ExtensionMethod anhängen. Hierfür implementieren wir in einer statischen Klasse eine Methode die es – für jede Klasse die IList implementiert – ermöglicht, die Elemente zu iterieren und eine Aktion auszuführen.
1 2 3 4 5 6 7 | public static class DataSetExtensions { public static void ForEach<T>(this IList<T> list, Action<T> action) { foreach (var item in list) action(item); } } |
Nun selektieren wir die Rows in ein DataRow[] und gehen dieses mit der ExtensionMethod “ForEach” durch und importieren die Daten in die gewünschte DataTable
1 2 | var kundeDataTableRows = kundeDataTable.Select(); kundeDataTableRows.ForEach(r => dataSetResult.Tables["Kunde"].ImportRow(r)); |
Viel Spaß beim entwickeln : )







Tipp: Wenn man die ExtensionMethod an IEnumerable definiert, hat man foreach an alle darunter liegenden Schnittstellen zur Verfügung.