2009-07-17 68 views
2

是否有人知道在LINQ庫(或公共可用工具庫)中是否有任何內置功能來優化IOrderedEnumerable<T>的操作,而不是IEnumerable<T>IOrderedEnumerable的LINQ優化

例如,在理論上,Contains<T>()擴展可能會被優化,以便在應用於有限的IOrderedEnumerable<T>並且T是IComparable時使用二分搜索。

另一個例子是Distinct<T>()的優化版本,它將被推遲和流傳(因爲在一個有序的,可比的集合中,你總是可以使用跳過/匹配技術來產生一個不同的集合)。

回答

6

有問題,有...

  • 二進制搜索不能在一個IOrderedEnumerable<T>被執行,因爲它非常需要索引訪問到一個列表/陣列。因此,這將需要調用類似的T項目ToList()/ToArray()第一
  • Distinct作品,但作品OrderBy一些方面各T - 這是不太一樣的,除非你知道它是由item=>item訂購;這種情況很少(很難證明)。
+0

非常好的觀點......我沒有考慮在所有情況下訂購集合的含義。 – LBushkin 2009-07-17 14:48:43