是否有人知道LINQ库(或公共实用程序库)中是否有任何内置功能可用于优化IOrderedEnumerable<T>(而不是IEnumerable<T>)上的操作?

例如,从理论上讲,当Contains<T>()扩展名应用于有限的IOrderedEnumerable<T>且T为IComparable时,可能会被优化为使用二进制搜索。

另一个示例是Distinct<T>()的优化版本,该版本将被推迟并且可以流式传输(因为在有序,可比较的集合上,您始终可以使用跳过/匹配技术来生成不同的集合)。

最佳答案

那里有问题...


二进制搜索不能在IOrderedEnumerable<T>上执行,因为它理想地需要索引器访问列表/数组。因此,必须先调用类似ToList() / ToArray()的名称
Distinct适用于T项目,但是OrderBy适用于每个T的某些方面-并非完全相同,除非您碰巧知道它是由item=>item排序的;很少有这种情况(很难证明)。

10-04 19:44