Was sollte IComparer zurückgeben, um anzugeben, "die bestehende Sortierreihenfolge beizubehalten"

8

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?

    
Justin 08.04.2013, 15:28
quelle

2 Antworten

2

(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.

    
Justin 10.04.2013, 14:10
quelle
1

Null, aber Ihr Sortieralgorithmus ändert möglicherweise noch seine Reihenfolge.

    
NthDeveloper 10.04.2013 14:02
quelle

Tags und Links