Кто-нибудь знает, есть ли встроенные возможности библиотеки LINQ (или общедоступной библиотеки) для оптимизированных операций с IOrderedEnumerable<T>
, а не IEnumerable<T>
?
Например, теоретически расширение Contains<T>()
потенциально может быть оптимизировано для использования бинарного поиска, когда оно применяется к конечному IOrderedEnumerable<T>
, а T является IComparable.
Другим примером может быть оптимизированная версия Distinct<T>()
, которая будет отложена и потокобезопасна (поскольку в упорядоченной сопоставимой коллекции вы всегда можете использовать методы пропуска/соответствия для создания отдельного набора).
Там есть проблемы...
IOrderedEnumerable<T>
, так как он идеально нуждается в доступе индексатора к списку/массиву. Поэтому сначала нужно было бы назвать что-то вроде ToList()
/ToArray()
Distinct
работает с элементами T
, но OrderBy
работает на некоторой грани каждого T
- это не совсем то же самое, если только вы не знаете, что он упорядочен item=>item
; что редко бывает (и трудно доказать).