<PackageReference Include="NUnit" Version="3.10.1" />

OrderedEnumerable<TElement>

abstract class OrderedEnumerable<TElement> : IOrderedEnumerable<TElement>, IEnumerable<TElement>, IEnumerable
using System.Collections; using System.Collections.Generic; namespace System.Linq { internal abstract class OrderedEnumerable<TElement> : IOrderedEnumerable<TElement>, IEnumerable<TElement>, IEnumerable { private IEnumerable<TElement> source; protected OrderedEnumerable(IEnumerable<TElement> source) { this.source = source; } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } public IEnumerator<TElement> GetEnumerator() { return Sort(source).GetEnumerator(); } public abstract SortContext<TElement> CreateContext(SortContext<TElement> current); protected abstract IEnumerable<TElement> Sort(IEnumerable<TElement> source); public IOrderedEnumerable<TElement> CreateOrderedEnumerable<TKey>(Func<TElement, TKey> selector, IComparer<TKey> comparer, bool descending) { return new OrderedSequence<TElement, TKey>(this, this.source, selector, comparer, descending ? SortDirection.Descending : SortDirection.Ascending); } } }