我想了解 ThenBy 在 .Net 中的工作原理。(我知道怎么用,就是不明白微软是怎么实现的!)
根据文档,string_list.OrderBy(Function (x) x.length).ThenBy(Function (x) x)
应该输出一个按长度排序的字符串列表,然后按字母顺序排列。它怎么可能起作用?!?第一种是按长度排序。第二个排序应该撤消第一个排序!
假设这段代码:
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 的函数!