Beschreibung:
Eine Methode, die eine übergebene DataTable nach einer wählbaren Spalte sortiert. Dazu wird die .Net DataTable.Sort-Methode verwendet. (Man spart also einiges an Zeilen und Zeit)
public DataTable Listensortierer(DataTable dt)
{
DataTable dtt = new DataTable(); //Erstellt eine leere Hilfs-Tabelle
dt.DefaultView.Sort = "SORT DESC"; //Sortiert die "SORT"-spalte, absteigende Reihenfolge
dtt = dt.DefaultView.ToTable(); //Leere Hilfs-Tabelle wird gefüllt
dt = dtt; //Leere Tabelle wird auf alte Tabelle abgebildet
return dt;
}
Schlagwörter: <DataTable Methode Sort sortieren DefaultView>
Verwendung:
Einfach in einem Programm einfügen und die Tabelle (als Beispiel nennen wir sie mal DT) so sortieren lassen:
DT = Listensortierer(DT);
Das SORT in der Methode muss durch die Spaltenbezeichung ersetzt werden!!
Die Sortierrichtung ist momentan absteigend (=DESC). Um aufsteigend zu sortieren, einfach das DESC durch ASC ersetzen.
Wäre es nicht besser, gleich die Spalte und die Sortierreihenfolge mitanzugen?
Dann könnte man auch schön mit einer Überladung arbeiten, so z.B.:
public DataTable Listensortierer(DataTable dt, string column)
{
return Listensortierer(dt, column, false);
}
public DataTable Listensortierer(DataTable dt, string column, bool descending)
{
DataTable dtt = new DataTable(); //Erstellt eine leere Hilfs-Tabelle
dt.DefaultView.Sort = String.Format("{0} {1}", column, descending ? "DESC" : "ASC"); //Sortiert die "SORT"-spalte, absteigende Reihenfolge
dtt = dt.DefaultView.ToTable(); //Leere Hilfs-Tabelle wird gefüllt
dt = dtt; //Leere Tabelle wird auf alte Tabelle abgebildet
return dt;
}
lg Lion
lg Lion
Und wozu dies?
Man kann doch gleich den DataView benutzen, und braucht die Daten nicht
zu verdoppeln.
Dann sieht die Methode jetzt komplett so aus:
public DataTable Listensortierer(DataTable dt, string column, string sort)
{
dt.DefaultView.Sort = column + " " + sort; //Sortiert die SORTspalte, sort = Reihenfolge
//ASC = aufsteigend, DESC = absteigend
dt = dt.DefaultView.ToTable(); //Leere Hilfs-Tabelle wird gefüllt
return dt;
}
wobei die Verwendung dann so erfolgt:
DT = Listensortierer(DT, "Spalte", "DESC");
für absteigende Reihenfolge, bzw:
DT = Listensortierer(DT, "Spalte", "ASC");
für aufsteigende Reihenfolge.
Danke für die Tipps 😃