IOrderedEnumerable的LINQ优化

LBu*_*kin 2 .net c# linq optimization

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

例如,理论上,当Contains<T>()扩展应用于有限IOrderedEnumerable<T>且T是IC可比较时,扩展可能被优化以使用二进制搜索.

另一个例子是优化版本的Distinct<T>()延迟和可流化(因为在有序的,可比较的集合中,您总是可以使用跳过/匹配技术来生成不同的集合).

Mar*_*ell 6

那里有问题......

  • 二进制搜索不能在a上执行IOrderedEnumerable<T>,因为它理想地需要索引器访问列表/数组.所以它必须调用像ToList()/ ToArray()first 这样的东西
  • DistinctT物品OrderBy起作用,但是在每个物品的某些方面起作用T- 它们并不完全相同,除非您碰巧知道它是按顺序排列的item=>item; 这很少见(很难证明).