Exemplo n.º 1
0
        public JoinPredicate AsJoin()
        {
            if (!IsJoinPredicate)
            {
                throw new InvalidOperationException();
            }

            JoinPredicate predicate = new JoinPredicate(Column, Comparison, (IQueryableColumn)Value);

            predicate.OrNextPredicate = OrNextPredicate;
            predicate.NextInGroup     = NextInGroup == null ? null : NextInGroup.ToExplicitJoinPredicate();

            return(predicate);
        }
Exemplo n.º 2
0
 /// <summary>
 /// Serves as a hash function for a particular type.
 /// </summary>
 /// <returns>
 /// A hash code for the current <see cref="T:System.Object" />.
 /// </returns>
 /// <filterpriority>2</filterpriority>
 public override int GetHashCode()
 {
     unchecked
     {
         int result = (Column != null ? Column.GetHashCode() : 0);
         result = (result * 397) ^ (Value != null ? Value.GetHashCode() : 0);
         result = (result * 397) ^ (Value2 != null ? Value2.GetHashCode() : 0);
         result = (result * 397) ^ Comparison.GetHashCode();
         result = (result * 397) ^ (NextInGroup != null ? NextInGroup.GetHashCode() : 0);
         result = (result * 397) ^ OrNextPredicate.GetHashCode();
         result = (result * 397) ^ OrToPreviousGroup.GetHashCode();
         return(result);
     }
 }
Exemplo n.º 3
0
        public bool Evaluate(object compare)
        {
            bool result = false;

            switch (Comparison)
            {
            case Comparison.Equal:
                result = CompareToFirstValue(compare) == 0;
                break;

            case Comparison.NotEqual:
                result = CompareToFirstValue(compare) != 0;
                break;

            case Comparison.Greater:
                result = CompareToFirstValue(compare) < 0;
                break;

            case Comparison.GreaterOrEqual:
                result = CompareToFirstValue(compare) <= 0;
                break;

            case Comparison.Less:
                result = CompareToFirstValue(compare) > 0;
                break;

            case Comparison.LessOrEqual:
                result = CompareToFirstValue(compare) >= 0;
                break;

            case Comparison.Between:
                result = CompareToSecondValue(compare) >= 0 && CompareToFirstValue(compare) <= 0;
                break;

            case Comparison.True:
                if (compare is bool)
                {
                    result = (bool)compare;
                }
                break;

            case Comparison.False:
                if (compare is bool)
                {
                    result = !(bool)compare;
                }
                break;

            case Comparison.StartsWith:
                result = EvalStartsWith(compare);
                break;

            case Comparison.EndsWith:
                result = EvalEndsWith(compare);
                break;

            case Comparison.Contains:
                result = EvalContains(compare);
                break;

            case Comparison.DoesNotStartWith:
                result = !EvalStartsWith(compare);
                break;

            case Comparison.DoesNotEndWith:
                result = !EvalEndsWith(compare);
                break;

            case Comparison.DoesNotContain:
                result = !EvalContains(compare);
                break;
            }

            if (NextInGroup == null)
            {
                return(result);
            }
            if (OrNextPredicate)
            {
                return(result || NextInGroup.Evaluate(compare));
            }
            return(result && NextInGroup.Evaluate(compare));
        }