是否有人知道LINQ库(或公共实用程序库)中是否有任何内置功能可用于优化IOrderedEnumerable<T>
(而不是IEnumerable<T>
)上的操作?
例如,从理论上讲,当Contains<T>()
扩展名应用于有限的IOrderedEnumerable<T>
且T为IComparable时,可能会被优化为使用二进制搜索。
另一个示例是Distinct<T>()
的优化版本,该版本将被推迟并且可以流式传输(因为在有序,可比较的集合上,您始终可以使用跳过/匹配技术来生成不同的集合)。
最佳答案
那里有问题...
二进制搜索不能在IOrderedEnumerable<T>
上执行,因为它理想地需要索引器访问列表/数组。因此,必须先调用类似ToList()
/ ToArray()
的名称Distinct
适用于T
项目,但是OrderBy
适用于每个T
的某些方面-并非完全相同,除非您碰巧知道它是由item=>item
排序的;很少有这种情况(很难证明)。