Ejemplo n.º 1
0
        public BetweenPredicate(IComparer <T> comparer, T lowerBound, T upperBound, BetweenCriteria excludedBounds)
        {
            if (comparer == null)
            {
                throw new ArgumentNullException("comparer");
            }

            _lowerBound = lowerBound;
            _upperBound = upperBound;
            _criteria   = excludedBounds;
            _comparison = comparer.Compare;
        }
Ejemplo n.º 2
0
        public static bool Between <T>(this T testValue, T lowerValue, T upperValue, BetweenCriteria criteria, bool nullOrder)
            where T : class, IComparable <T>
        {
            switch (criteria)
            {
            case BetweenCriteria.IncludeBoth:
                return(Compare(testValue, lowerValue, ComparisonCriteria.GreaterThanOrEqual, nullOrder) && Compare(testValue, upperValue, ComparisonCriteria.LessThanOrEqual, nullOrder));

            case BetweenCriteria.ExcludeLower:
                return(Compare(testValue, lowerValue, ComparisonCriteria.GreaterThan, nullOrder) && Compare(testValue, upperValue, ComparisonCriteria.LessThanOrEqual, nullOrder));

            case BetweenCriteria.ExcludeUpper:
                return(Compare(testValue, lowerValue, ComparisonCriteria.GreaterThanOrEqual, nullOrder) && Compare(testValue, upperValue, ComparisonCriteria.LessThan, nullOrder));

            case BetweenCriteria.ExcludeBoth:
                return(Compare(testValue, lowerValue, ComparisonCriteria.GreaterThan, nullOrder) && Compare(testValue, upperValue, ComparisonCriteria.LessThan, nullOrder));

            default:
                throw new InvalidOperationException();
            }
        }
Ejemplo n.º 3
0
        public static bool Between(this IComparable testValue, object lowerValue, object upperValue, BetweenCriteria criteria, bool nullOrder = false)
        {
            switch (criteria)
            {
            case BetweenCriteria.IncludeBoth:
                return(Compare(testValue, lowerValue, ComparisonCriteria.GreaterThanOrEqual, nullOrder) && Compare(testValue, upperValue, ComparisonCriteria.LessThanOrEqual, nullOrder));

            case BetweenCriteria.ExcludeLower:
                return(Compare(testValue, lowerValue, ComparisonCriteria.GreaterThan, nullOrder) && Compare(testValue, upperValue, ComparisonCriteria.LessThanOrEqual, nullOrder));

            case BetweenCriteria.ExcludeUpper:
                return(Compare(testValue, lowerValue, ComparisonCriteria.GreaterThanOrEqual, nullOrder) && Compare(testValue, upperValue, ComparisonCriteria.LessThan, nullOrder));

            case BetweenCriteria.ExcludeBoth:
                return(Compare(testValue, lowerValue, ComparisonCriteria.GreaterThan, nullOrder) && Compare(testValue, upperValue, ComparisonCriteria.LessThan, nullOrder));

            default:
                throw new InvalidOperationException();
            }
        }