public void chain(ChainableComparer <T> lastComparer)
 {
     if (this._nextComparer == null)
     {
         this._nextComparer = lastComparer;
         return;
     }
     this._nextComparer.chain(lastComparer);
 }
 public ChainableComparer <T> Then(ChainableComparer <T> comparer)
 {
     if (this._nextComparer != null)
     {
         this._lastComparer.chain(comparer);
     }
     else
     {
         this._nextComparer = comparer;
     }
     this._lastComparer = comparer;
     return(this);
 }
        public int Compare(T x, T y)
        {
            int?nullable = ChainableComparer <T> .handleNulls(x, y);

            if (nullable.HasValue)
            {
                return(nullable.Value);
            }
            int num = this.DoCompare(x, y);

            if (this.needsToEvaluateNext(num))
            {
                num = this._nextComparer.Compare(x, y);
            }
            if (this._direction == Direction.Descending)
            {
                ChainableComparer <T> .invert(ref num);
            }
            return(num);
        }
Example #4
0
 public static ChainableComparer <T> Then <T>(this ChainableComparer <T> chainable, Comparison <T> next)
 {
     return(chainable.Then(new ComparisonComparer <T>(next)));
 }
Example #5
0
 public static ChainableComparer <T> Then <T, U>(this ChainableComparer <T> chainable, Func <T, U> keySelector, Direction sortDirection)
 {
     return(chainable.Then(new SelectorComparer <T, U>(keySelector, sortDirection)));
 }
Example #6
0
 public static ChainableComparer <T> Then <T>(this ChainableComparer <T> chainable, Comparison <T> next, Direction sortDirection)
 {
     return(chainable.Then(new ComparisonComparer <T>(next, sortDirection)));
 }