Кто-нибудь знает, есть ли какие-либо встроенные возможности в библиотеке LINQ (или общедоступной утилите) для оптимизированных операций на IOrderedEnumerable<T>
, а не IEnumerable<T>
?Оптимизация LINQ для IOrderedEnumerable
Например, теоретически расширение Contains<T>()
потенциально может быть оптимизировано для использования бинарного поиска, когда оно применяется к конечному IOrderedEnumerable<T>
, а T является IComparable.
Другим примером может быть оптимизированная версия Distinct<T>()
, которая будет отложена и потокобезопасна (поскольку в упорядоченной сопоставимой коллекции вы всегда можете использовать методы пропуска/совпадения для создания отдельного набора).
Отличные баллы ... Я не рассматривал последствия того, что заказ коллекции может означать во всех случаях. – LBushkin
Nitpick: вам не нужно знать, что он упорядочен элементом item =>, если вы знаете, что IEqualityComparer передан Distinct, подчиняется тем же самым заказам, что и OrderBy. Как вы говорите, вы не можете знать это во всех случаях. Я думаю, вы могли бы захватить IComparer, используемый OrderBy/ThenBy, и использовать его, но это, скорее всего, слишком много работает. –