//Ensure that OrderBy returns the right type. //There are other variants of OrderBy extension methods you'll have to short-circuit public MyOrderedEnumerable <T> OrderBy <TKey>(Func <T, TKey> keySelector) { Console.WriteLine("Ordering"); var newSorted = new MyOrderedEnumerable <T>(Original); newSorted.Sorted = (Sorted != null ? Sorted : Original).OrderBy(keySelector); return(newSorted); }
public IOrderedEnumerable <T> CreateOrderedEnumerable <TKey>( Func <T, TKey> keySelector, IComparer <TKey> comparer, bool descending) { var newSorted = new MyOrderedEnumerable <T>(Original); newSorted.ApplyOrder(keySelector, comparer, descending); return(newSorted); }
public static void Test() { var nums = new MyOrderedEnumerable <int>(Enumerable.Range(0, 10).ToList()); var nums2 = nums.OrderBy(x => - x); var z = nums.Count() + nums2.Count(); }