Jak działa IOrderedEnumerable.ThenBy () w .Net?

Chcę zrozumieć, jak działa ThenBy w .Net. (Wiem, jak go używać, po prostu nie rozumiem, jak Microsoft go wdrożył!)

Zgodnie z dokumentacjąstring_list.OrderBy(Function (x) x.length).ThenBy(Function (x) x) powinien wypisać listę ciągów uporządkowanych według długościi wtedy alfabetycznie. Jak to może działać? Pierwszy rodzaj jest według długości. Drugi rodzaj powinien cofnąć sortowanie pierwszego!

Załóżmy, że ten kod:

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

Oto próbuję zaimplementować ostatnią linię bez użyciaThenBy:

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

Jest tu trochę magii ... Czy jest jakaś funkcja e.GetPreviousKeySelector ()? W rzeczywistości nie mogę nawet napisać funkcji, która zwraca IOrderedEnumerable!

questionAnswers(1)

yourAnswerToTheQuestion