public LikeExpressionBuilder(Operator oper)
 {
     _expression = new LikeExpression
     {
         Operator = oper
     };
 }
 public override void Visit(LikeExpression e)
 {
     _expression.SetOperand(e);
 }
 public virtual void Visit(LikeExpression e)
 {
     throw new NotSupportedException();
 }
        public virtual void Visit(LikeExpression e)
        {
            e.Column.Accept(this);

            switch (e.Operator)
            {
                case Operator.LikeStartsWith:
                case Operator.LikeContains:
                case Operator.LikeEndsWith:
                    _sql.Append(" LIKE ");
                    break;
                case Operator.NotLikeStartsWith:
                case Operator.NotLikeContains:
                case Operator.NotLikeEndsWith:
                    _sql.Append(" NOT LIKE ");
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }

            var value = (string)e.Value.Value;

            switch (e.Operator)
            {
                case Operator.LikeStartsWith:
                case Operator.NotLikeStartsWith:
                    value = value + "%";
                    break;
                case Operator.LikeEndsWith:
                case Operator.NotLikeEndsWith:
                    value = "%" + value;
                    break;
                case Operator.LikeContains:
                case Operator.NotLikeContains:
                    value = "%" + value + "%";
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }

            e.Value.Value = value;

            Visit(e.Value);
        }
 public override void Visit(LikeExpression e)
 {
     _expression.Operand = e;
 }