Ich habe eine Liste von Objekten in C #. Alle Objekte enthalten die Eigenschaften code1 und code2 (neben anderen Eigenschaften). Die Liste der Objekte befindet sich in keiner bestimmten Reihenfolge. Ich muss die Liste der Objekte nach den Eigenschaften code1 und code2 sortieren.
Beispiel:
%Vor% Beispielcode 1 = 004
Beispielcode 2 = 001, 002, 003, 004, 016
Beispielcode 1 = 005
Beispielcode 2 = 001, 002, 003, 004
Also nach der Sortierung möchte ich die Objekte in der folgenden Reihenfolge
004 001
004 002
004 003
004 005
004 016
005 001
005 002
005 003
005 004
Sie können Linq-Erweiterungen verwenden (die ursprüngliche Liste wird unsortiert belassen):
%Vor%Um die ursprüngliche Liste durch eine sortierte zu ersetzen, machen Sie eine kleine Änderung (nicht sehr effizient, es erstellt eine neue Liste):
%Vor%Dies setzt voraus, dass Ihre Liste vom richtigen Typ ist, etwa wie folgt:
%Vor% Und keine Liste von Objekten, in diesem Fall müssten Sie .Cast<>()
oder .OfType<>()
verwenden.
Beachten Sie, dass die Antwort von Adam Houldsworth mit dem Aufruf .ToList()
unnötigerweise eine neue Liste erstellt. Wenn Ihre Liste groß ist, kann dies zu einem inakzeptablen Speicherdruck führen. Es wäre wahrscheinlich besser, die Liste an Ort und Stelle zu sortieren, indem Sie eine benutzerdefinierte Vergleichsfunktion bereitstellen:
Wenn diese Reihenfolge eine inhärente Eigenschaft Ihres Typs ist, können Sie alternativ IComparable<T>
für Ihren Typ implementieren und einfach
... welches die IComparable<T>.CompareTo()
Implementierung verwendet.
Tags und Links c# list sorting properties order