Benutzer-Werkzeuge

Webseiten-Werkzeuge


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.

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

Beispiel

SortDatatable.cs
  1. DataTable table = new DataTable();
  2.  
  3. table.Columns.Add( new DataColumn( "Nachname", typeof( string )));
  4. table.Columns.Add( new DataColumn( "Vorname", typeof( string )));
  5.  
  6. table.Rows.Add( new object[] { "de Burgh", "Chris" } );
  7. table.Rows.Add( new object[] { "Minogue", "Kylie" } );
  8. table.Rows.Add( new object[] { "Oldfield", "Mike" } );
  9. table.Rows.Add( new object[] { "Brightman", "Sarah" } );
  10.  
  11. DataView view = new DataView( table );
  12. view.Sort = "Nachname";
  13. 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: Tue 24. Nov 2020, 20:56 Uhr von Stefan Jahn