Ich habe eine Liste von Objekten, die ich brauche, um die Liste basierend auf Objekt Eigenschaft1 zu sortieren, und ich muss die resultierende Liste mit Objekt Eigenschaft2 wieder zu sortieren, ohne die Gruppierung in der ersten Sortierung zu verlieren .... für ex: obj hat 2 Eigenschaftsname und Standort ich brauche eine endgültige Liste der Objekte zu haben, die mit dem Bereich und Objekte der gleichen Region sortiert wurde, sollte nach dem Namen sortiert werden ...Liste Sortierung in C#
Antwort
(Vorausgesetzt, dass Sie nicht LINQ zur Verfügung haben, die diese trivial macht.)
Wenn Sie in MiscUtil anschauen, werden Sie zwei nützliche Klassen finden: ProjectionComparer
und LinkedComparer
(IIRC).
ProjectionComparer
implementiert im Grunde das LINQ "order by" -Konzept - Sie geben an, wie ein Quellelement in einen Schlüsselwert konvertiert wird, und der Vergleicher wird nach diesen Schlüsselwerten sortiert.
LinkedComparer
nimmt zwei Vergleiche und gibt einen neuen Vergleich zurück, der zuerst den "primären" Vergleich und den "sekundären" Vergleich verwendet, wenn die Werte in Bezug auf den primären Vergleichswert gleich sind.
Erstellen Sie zwei Projektionsvergleicher (einen für jede Eigenschaft) und dann einen verknüpften Vergleich mit den beiden, und geben Sie diesen an List<T>.Sort
weiter. Lassen Sie uns wissen, wenn Sie ein vollständiges Codebeispiel benötigen, aber es wäre so etwas wie (unter Verwendung von C# 3) sein:
var comparer = new LinkedComparer<Foo>
(ProjectionComparer<Foo>.Create(x => x.FirstProperty),
ProjectionComparer<Foo>.Create(x => x.SecondProperty));
(In C# 2 können Sie anonyme Methoden verwenden, sie würden nur ein bisschen mehr langfris sein winded.)
Eine Liste hat eine Sort-Methode, die einen Comparison-Delegaten als Argument verwendet. Es gibt auch Überladungen, bei denen Sie Ihren eigenen Vergleich übergeben können.
So können Sie eine Klasse schreiben, die IComparer implementiert. Dann schreiben Sie in der Implementierung dieser Klasse den Code, in dem Sie die 2 Objekte in den gewünschten Eigenschaften vergleichen.
- 1. Liste in Python (transponieren) Sortierung
- 2. R - Sortierung verschachtelte Liste
- 3. Sortierung ohne Sortierung mit Sortierung (Liste, Schlüssel = Str.Loer)
- 4. schnelle Sortierung in C++
- 5. Python Liste Sortierung, Wörterbücher innerhalb einer Liste
- 6. Sortierung & Entfernen von Zeilen in einer C# Multidimension Liste
- 7. Verknüpfte Liste Sortierung
- 8. Liste der verschachtelten Wörterbücher in Python Sortierung
- 9. C# - Sortierung mit Erweiterungsmethode
- 10. Implementierung Merge Sortierung in C++
- 11. Sortierung String-Array in c
- 12. C# .NET LinQ - Sortierung Teilmengen einer Liste von Objekten
- 13. Sortierung aufsteigende und absteigende in einer Liste
- 14. Sortierte Liste in Idris (Insertion Sortierung)
- 15. Sortierung durch eine benutzerdefinierte Liste in Pandas
- 16. Sortierung nach höchstem Durchschnitt in einer Liste
- 17. Sortierung Dropdown-Liste mit Javascript
- 18. C#: Sortierung mit anonymer Funktion
- 19. Linq: Sortierung der Liste auf Basis einer anderen Liste
- 20. C++: Std :: Map-Sortierung
- 21. C#: benutzerdefinierte Array-Sortierung
- 22. Datagridview in C# - benutzerdefinierte Sortierung der Spalte
- 23. Sortierung Array von Strukturen in c
- 24. Shell-Sortierung in C liefert kein Ergebnis
- 25. Vektoren in C++, Bucket-Sortierung: Segmentierungsfehler
- 26. Multi-Key Benutzerdefinierte Sortierung in C++
- 27. Sortierung Strings mit Insertionsort in C - Segmentierungsfehler
- 28. Sortierung von Arrays in Objective-C
- 29. in c ein 2-dimensionalen Array Sortierung
- 30. C Sortierung ändert den Wert in Array