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); }
public static ChainableComparer <T> Then <T>(this ChainableComparer <T> chainable, Comparison <T> next) { return(chainable.Then(new ComparisonComparer <T>(next))); }
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))); }
public static ChainableComparer <T> Then <T>(this ChainableComparer <T> chainable, Comparison <T> next, Direction sortDirection) { return(chainable.Then(new ComparisonComparer <T>(next, sortDirection))); }