Eya*_*yal 12 .net vb.net ienumerable iorderedenumerable
我想了解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
Run Code Online (Sandbox Code Playgroud)
这是我试图在不使用的情况下实现最后一行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
Run Code Online (Sandbox Code Playgroud)
这里有一些神奇的东西......是否有一些e.GetPreviousKeySelector()函数?实际上,我甚至无法编写一个返回IOrderedEnumerable的函数!
Jon*_*eet 13
怎么可能有用?!?第一种是长度.第二种排序应该撤消第一种排序!
不,只有当主要比较找到两个相等的值时,才会查询第二次排序比较.
的IOrderedEnumerable,或如把它,让您打造从"当前比较和另外一个时返回0请示"进行比较的另一种方式-通过实施记住所有的比较,有效地做到这一点.
我有一个博客文章系列,它深入到LINQ to Objects,提供了一个完整的替代实现.部分26a和26bIOrderedEnumerable涵盖了基础,26c和26d中有更多细节和优化.
实际上,我甚至无法编写一个返回IOrderedEnumerable的函数!
你绝对可以 - 通过返回返回的值OrderBy,或者自己实现它.