protected virtual Clause Render(IValueClause @param)
 {
     return new Clause
     {
         Operator = @param.ClauseOperator,
         Value = this.Build(@param)
     };
 }
        protected virtual string Build(IValueClause @param)
        {
            string fieldpart = string.Format("'{0}'", @param.Field());

            if (fieldpart == "\'\'")
            {
                throw new ArgumentNullException("@param.FieldID");
            }

            string format = string.Empty;

            switch (@param.Operator)
            {
                case Operator.Equals:
                    format = "{1} = \"{0}\"";
                    if (string.IsNullOrEmpty(@param.Value))
                    {
                        format = "({1} = \"{0}\" OR {1} = NULL)";
                    }
                    break;
                case Operator.DoesNotEqual:
                    format = "{1} != \"{0}\"";

                    if (string.IsNullOrEmpty(@param.Value))
                    {
                        format = "({1} != \"{0}\" AND {1} != NULL)";
                    }
                    break;
                case Operator.Contains:
                    format = "{1} LIKE \"%{0}%\"";
                    break;
                case Operator.DoesNotContain:
                    format = "NOT({1} LIKE \"%{0}%\")";
                    break;
                case Operator.StartsWith:
                    format = "{1} LIKE \"{0}%\"";
                    break;
                case Operator.DoesNotStartWith:
                    format = "NOT({1} LIKE \"{0}%\")";
                    break;
                case Operator.EndsWith:
                    format = "{1} LIKE \"%{0}\"";
                    break;
                case Operator.DoesNotEndWith:
                    format = "NOT({1} LIKE \"%{0}\")";
                    break;
                case Operator.GreaterThan:
                    format = "{1} > \"{0}\"";
                    break;
                case Operator.GreaterThanOrEqualTo:
                    format = "{1} >= \"{0}\"";
                    break;
                case Operator.LesserThan:
                    format = "{1} < \"{0}\"";
                    break;
                case Operator.LesserThanOrEqualTo:
                    format = "{1} <= \"{0}\"";
                    break;
            }

            return string.Format(format, @param.Value, fieldpart);
        }
Пример #3
0
 internal ValuePair(IValueClause first, ClauseOperator clauseoperator, IValueClause second)
 {
     this.First = first;
     this.Second = second;
     this.ClauseOperator = clauseoperator;
 }