Wie funktioniert IOrderedEnumerable.ThenBy () in .Net?

Ich möchte verstehen, wie ThenBy in .Net funktioniert. (Ich weiß, wie man es benutzt, ich verstehe einfach nicht, wie Microsoft es implementiert hat!)

Nach der Dokumentation,string_list.OrderBy(Function (x) x.length).ThenBy(Function (x) x) sollte eine Liste von Strings nach Länge sortiert ausgebenund dann alphabetisch. Wie könnte es evtl. funktionieren?!? Die erste Sortierung erfolgt nach Länge. Die zweite Sortierung sollte die Sortierung der ersten rückgängig machen!

Angenommen, dieser Code:

Dim sorted_by_length As IOrderedEnumerable(Of String)
sorted_by_length = string_list.OrderBy(Function (x) x.length)
sorted_by_length = sorted_by_length.ThenBy(Function

Hier versuche ich, die letzte Zeile ohne Verwendung von zu implementierenThenBy:

Dim sorted_by_length As IOrderedEnumerable(Of String)
sorted_by_length = string_list.OrderBy(Function (x) x.length)
'my implementation of OrderBy:
Dim e as IEnumerator(Of String) = sorted_by_length.GetEnumerator
Do While e.MoveNext
    'I have no idea what to write here!
Loop

Hier ist etwas Magisches los ... Gibt es eine e.GetPreviousKeySelector () -Funktion? Tatsächlich kann ich nicht einmal eine Funktion schreiben, die IOrderedEnumerable zurückgibt!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage