Web- und Software Development

DataSetExtension – ForEach | C# Quicky

Written By: - Aug• 30•10

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 : )


Ähnliche Beiträge

You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

One Comment

  1. Mario sagt:

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