Как работает IOrderedEnumerable.ThenBy () в .Net?

Я хочу понять, как ThenBy работает в .Net. (Я знаю, как его использовать, я просто не понимаю, как Microsoft это реализовала!)

Согласно документации,string_list.OrderBy(Function (x) x.length).ThenBy(Function (x) x) должен вывести список строк, упорядоченных по длинеand then в алфавитном порядке. Как это могло сработать?!? Первый сорт по длине. Вторая сортировка должна отменить сортировку первой!

Предположим, этот код:

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

Здесь я пытаюсь реализовать последнюю строку без использованияThenBy:

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

Здесь происходит какое-то волшебство ... Есть ли какая-нибудь функция e.GetPreviousKeySelector ()? Фактически, я даже не могу написать функцию, которая возвращает IOrderedEnumerable!

Ответы на вопрос(1)

Ваш ответ на вопрос