Wie man List<T> nach einer Objekteigenschaft in C# sortiert: Vollständiger Leitfaden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

List<T> in C# sortieren: Vom Chaos zur Ordnung in 5 Minuten

\n\n

Stellen Sie sich vor: Sie haben eine Liste von Benutzern und müssen sie in alphabetischer Reihenfolge nach Nachnamen anzeigen. Oder eine Liste von Produkten – sortiert nach Preis von günstig zu teuer. Eine bekannte Aufgabe? Auf Stack Overflow hat die Frage „How to Sort a List<T> by a property in the object“ Tausende von Aufrufen gesammelt – das bedeutet, dieses Thema beschäftigt viele Entwickler.

\n\n

In diesem Artikel behandeln wir fünf Methoden zum Sortieren einer Liste in C#. Sie erfahren, wie Sie nach einer Eigenschaft, nach mehreren Feldern sortieren und wie Sie die Sortierung so schnell wie möglich gestalten. Los geht's!

\n\n

Was wir sortieren werden: Die Klasse User

\n\n

Für die Beispiele nehmen wir ein einfaches Datenmodell – einen Benutzer mit Name, Alter und Bewertung.

\n\n
public class User\n{\n    public string Name { get; set; }\n    public int Age { get; set; }\n    public double Rating { get; set; }\n\n    public override string ToString()\n    {\n        return $"{Name} ({Age}) — {Rating:F2}";\n    }\n}
\n\n

Erstellen wir eine Testliste:

\n\n
List<User> users = new List<User>\n{\n    new User { Name = "Anna", Age = 30, Rating = 4.5 },\n    new User { Name = "Boris", Age = 25, Rating = 3.8 },\n    new User { Name = "Viktor", Age = 35, Rating = 4.9 },\n    new User { Name = "Galina", Age = 28, Rating = 4.2 }\n};
\n\n

Methode 1: LINQ OrderBy – die einfachste und eleganteste

\n\n

Wenn Sie List<T> nach einer Objekteigenschaft sortieren möchten, schnell und ohne überflüssigen Code – verwenden Sie LINQ. Die Methode OrderBy erstellt eine neue geordnete Sequenz, ohne die ursprüngliche Liste zu verändern. Dies ist ideal, wenn eine Sortierung „im laufenden Betrieb“ benötigt wird.

\n\n
// Sortierung nach Name (aufsteigend)\nvar sortedByName = users.OrderBy(u => u.Name).ToList();\n\n// Sortierung nach Alter (absteigend)\nvar sortedByAgeDesc = users.OrderByDescending(u => u.Age).ToList();\n\n// Sortierung nach mehreren Feldern: zuerst nach Alter, dann nach Bewertung\nvar sortedMulti = users\n    .OrderBy(u => u.Age)\n    .ThenBy(u => u.Rating)\n    .ToList();
\n\n

Vorteile: Lesbarkeit, Sortierketten, funktioniert mit beliebigen Eigenschaftstypen.
\nNachteile: Erstellt eine neue Liste (zusätzlicher Speicher).

\n\n

Methode 2: List.Sort mit Comparison-Delegat – Sortierung an Ort und Stelle

\n\n

Wenn Sie eine C#-Liste sortieren möchten, ohne eine Kopie zu erstellen (Speicherersparnis), verwenden Sie die Methode Sort mit einem Lambda-Ausdruck. Diese Methode verändert die ursprüngliche Sammlung.

\n\n
// Sortierung nach Name (an Ort und Stelle)\nusers.Sort((a, b) => string.Compare(a.Name, b.Name, StringComparison.Ordinal));\n\n// Sortierung nach Alter (absteigend)\nusers.Sort((a, b) => b.Age.CompareTo(a.Age));\n\n// Sortierung nach Bewertung\nusers.Sort((a, b) => a.Rating.CompareTo(b.Rating));
\n\n

Vorteile: Erstellt kein neues Objekt, schneller für große Listen.
\nNachteile: Weniger lesbar bei komplexer Sortierung.

\n\n

Methode 3: Implementierung von IComparable – Sortierung „von Haus aus“

\n\n

Wenn Ihre Klasse immer nach demselben Feld sortiert werden soll (z. B. nach Name), implementieren Sie das Interface IComparable<T>. Dann funktioniert List.Sort() ohne Argumente.

\n\n
public class User : IComparable<User>\n{\n    // ... Eigenschaften aus dem obigen Beispiel ...\n\n    public int CompareTo(User other)\n    {\n        if (other == null) return 1;\n        return string.Compare(this.Name, other.Name, StringComparison.Ordinal);\n    }\n}\n\n// Verwendung\nusers.Sort(); // automatisch nach Name
\n\n

Vorteile: Natürliche Sortierung für die Geschäftslogik.
\nNachteile: Legt eine Regel fest – für andere Felder muss separate Logik geschrieben werden.

\n\n

Methode 4: IComparer – flexible Sortierung

Blogs

Buchempfehlungen