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.
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();
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";