Пример #1
0
        public SorterComparer GetComparer(bool ascending)
        {
            lock (ComparerLock) {
                PrepareSort();

                if (ascending)
                {
                    if (AscendingSorter == null)
                    {
                        AscendingSorter = new SorterComparer(this, ascending);
                    }

                    return(AscendingSorter);
                }
                else
                {
                    if (DescendingSorter == null)
                    {
                        DescendingSorter = new SorterComparer(this, ascending);
                    }

                    return(DescendingSorter);
                }
            }
        }
Пример #2
0
 private void Invalidate()
 {
     lock (ComparerLock) {
         AscendingSorter  = null;
         DescendingSorter = null;
     }
 }
        public static ISorterEnumerable <TElement> ThenByDescending <TElement, TKey>(this ISorterEnumerable <TElement> source, Func <TElement, TKey> keySelector, IComparer <TKey> comparer)
        {
            var sourceComparer = source.Comparer;

            var nextComparer = new SorterComparer <TElement, TKey>(comparer, keySelector, true);

            sourceComparer.Next = nextComparer;

            return(source);
        }
        public static ISorterEnumerable <TElement> SortByDescending <TElement, TKey>(this ParallelQuery <TElement> source, Func <TElement, TKey> keySelector, IComparer <TKey> comparer, ISorter <TElement> sorter)
        {
            var sorterComparer = new SorterComparer <TElement, TKey>(comparer, keySelector, true);

            return(new SorterEnumerable <TElement>(source, sorterComparer, sorter, true));
        }
        public static ISorterEnumerable <TElement> SortBy <TElement, TKey>(this IEnumerable <TElement> source, Func <TElement, TKey> keySelector, IComparer <TKey> comparer, ISorter <TElement> sorter)
        {
            var sorterComparer = new SorterComparer <TElement, TKey>(comparer, keySelector, false);

            return(new SorterEnumerable <TElement>(source, sorterComparer, sorter, false));
        }