是否有人知道LINQ库(或公开可用的实用程序库)中是否存在任何内置功能,以便在IOrderedEnumerable<T>
上优化操作,而不是IEnumerable<T>
?
例如,理论上,当Contains<T>()
扩展应用于有限IOrderedEnumerable<T>
且T为IC Comparable时,可能会优化Distinct<T>()
扩展以使用二进制搜索。
另一个例子是{{1}}的优化版本,它将是延迟和可流化的(因为在有序的,可比较的集合中,您总是可以使用跳过/匹配技术来生成不同的集合。)
答案 0 :(得分:6)
那里有问题......
IOrderedEnumerable<T>
上执行二进制搜索,因为理想情况下需要将索引器访问到列表/数组中。因此,必须首先调用类似ToList()
/ ToArray()
Distinct
适用于T
项,但OrderBy
适用于每个T
的某些 facet - 它们并不完全相同,除非您碰巧知道它是由item=>item
订购的;这种情况很少见(很难证明)。