Stefans Wiki



DataTable sortieren

Problem

Wenn man Tabellen mit Daten aus einer Datenbank füllt ist die Sortierung eigentlich kein Problem. Man gestaltet entsprechend die Datenbankabfrage (SQL) und sortiert die Datensätze schon beim Einlesen der Daten.

Was ist aber wenn man die Datensätze schon in einer DataTable vorliegen hat, z.B. bei einer manuell gefüllten Tabelle, und diese nun sortieren will? Die Klasse DataTable selber stellt keine Funktion zur Sortierung zur Verfügung.

Lösung

Man kann den Umweg über ein DataView nehmen. Ein DataView kann man nach jeder beliebigen Spalte sortieren lassen.

DataView view = new DataView( table );
view.Sort = "[Spaltenname]";
table     = view.ToTable();

Beispiel

DataTable table = new DataTable();
 
table.Columns.Add( new DataColumn( "Nachname", typeof( string )));
table.Columns.Add( new DataColumn( "Vorname", typeof( string )));
 
table.Rows.Add( new object[] { "de Burgh", "Chris" } );
table.Rows.Add( new object[] { "Minogue", "Kylie" } );
table.Rows.Add( new object[] { "Oldfield", "Mike" } );
table.Rows.Add( new object[] { "Brightman", "Sarah" } );
 
DataView view = new DataView( table );
view.Sort = "Nachname";
table     = view.ToTable();

Als Werte für den Property Sort kann man auch mehere Spalten oder sogar die Sortierrichtung angeben, so wie man es vom Sort-Syntax bei SQL gewohnt ist:

view.Sort = "Nachname, Vorname";
view.Sort = "Nachname DESC";
view.Sort = "Nachname DESC, Vorname";
c-sharp/datatable_sortieren.txt · Zuletzt geändert: 12.07.2011 12:31 (Externe Bearbeitung)
Quelle: http://stefanjahn.de/c-sharp:datatable_sortieren
Webseite: http://stefanjahn.de