Ich implementiere einen benutzerdefinierten Comparer , um einen benutzerdefinierten Code zu übernehmen Sortierreihenfolge für Elemente in verschiedenen Ansichten.
Manchmal stelle ich fest, dass ich die bestehende Reihenfolge der Elemente beibehalten möchte. Was sollte ich in diesem Fall von meiner Compare
-Methodenimplementierung zurückgeben? Ist es genug, um einfach 0 zurückzugeben, oder muss ich aktiv herausfinden, welcher Artikel zuerst kam?
(Kredit für diese Antwort geht an Lee )
Es hängt davon ab, ob der für die Sortierung verwendete Algorithmus stable ist. Zum Beispiel ist die OrderBy stabil und die Rückgabe von 0 aus Compare
bedeutet also, dass die beiden Elemente behalten ihre ursprüngliche Reihenfolge in der Liste bei, List.Sort jedoch nicht und geben 0 zurück Von Compare
kann nicht garantiert werden, dass die beiden Elemente in der sortierten Ausgabe in ihrer ursprünglichen Reihenfolge angezeigt werden.
Null, aber Ihr Sortieralgorithmus ändert möglicherweise noch seine Reihenfolge.