IOrderedEnumerable的LINQ优化

时间:2009-07-17 14:35:59

标签: c# .net linq optimization

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

例如,理论上,当Contains<T>()扩展应用于有限IOrderedEnumerable<T>且T为IC Comparable时,可能会优化Distinct<T>()扩展以使用二进制搜索。

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

1 个答案:

答案 0 :(得分:6)

那里有问题......

  • 无法在IOrderedEnumerable<T>上执行二进制搜索,因为理想情况下需要将索引器访问到列表/数组中。因此,必须首先调用类似ToList() / ToArray()
  • 的内容
  • Distinct适用于T项,但OrderBy适用于每个T的某些 facet - 它们并不完全相同,除非您碰巧知道它是由item=>item订购的;这种情况很少见(很难证明)。