Example #1
0
        static Tuple <string, bool> GetSqlPredicate(CriterionPredicate pred)
        {
            string predSql  = null;
            bool   hasValue = true;

            switch (pred)
            {
            case CriterionPredicate.Eq:
                predSql = "=";
                break;

            case CriterionPredicate.Gt:
                predSql = ">";
                break;

            case CriterionPredicate.GtEq:
                predSql = ">=";
                break;

            case CriterionPredicate.Lt:
                predSql = "<";
                break;

            case CriterionPredicate.LtEq:
                predSql = "<=";
                break;

            case CriterionPredicate.Neq:
                predSql = "<>";
                break;

            case CriterionPredicate.Null:
                predSql  = "is null";
                hasValue = false;
                break;

            case CriterionPredicate.NotNull:
                predSql  = "is not null";
                hasValue = false;
                break;

            case CriterionPredicate.StartsWith:
            case CriterionPredicate.EndsWith:
            case CriterionPredicate.Contains:
                predSql = "like";
                break;
            }

            return(new Tuple <string, bool>(predSql, hasValue));
        }
 public static FilteringDescriptor Get <TEntity>(
     Expression <Func <TEntity, object> > memberSelector,
     object criterion,
     CriterionPredicate predicate = CriterionPredicate.Eq,
     bool ignoreCase = false)
 {
     return(new FilteringDescriptor()
     {
         Field = LinqExpressionHelper.GetMembersChain(memberSelector),
         Predicate = predicate,
         Criterion = criterion,
         IgnoreCase = ignoreCase
     });
 }
Example #3
0
        string Quote(object val, CriterionPredicate pred)
        {
            var res = new StringBuilder();
            bool needQuotes = false;
            bool escapedLike = false;
            bool sqlLike = pred == CriterionPredicate.StartsWith || pred == CriterionPredicate.Contains ||
                           pred == CriterionPredicate.EndsWith;
            if (val != null)
            {
                string valString = Convert.ToString(val, CultureInfo.InvariantCulture);
                if (IsNumber(val))
                    res.Append(valString);
                else
                {
                    Type objType = val.GetType();
                    objType = Nullable.GetUnderlyingType(objType) ?? objType;

                    if (typeof(bool) == objType)
                        res.Append((bool)val ? "1" : "0");
                    else
                    {
                        needQuotes = true;
                        res.Append(SqlCleanString(valString, sqlLike, ref escapedLike));
                    }
                }
            }

            if (pred == CriterionPredicate.StartsWith)
                res.Append('%');
            else if (pred == CriterionPredicate.Contains)
            {
                res.Append('%');
                res.Insert(0, '%');
            }
            else if (pred == CriterionPredicate.EndsWith)
                res.Insert(0, '%');

            if (needQuotes || sqlLike)
            {
                res.Append('\'');
                res.Insert(0, '\'');
                if (_unicode)
                    res.Insert(0, 'N');

                if (escapedLike)
                    res.AppendFormat(" escape '{0}'", EscapeSlqLike);
            }

            return res.ToString();
        }
Example #4
0
        static Tuple<string, bool> GetSqlPredicate(CriterionPredicate pred)
        {
            string predSql = null;
            bool hasValue = true;
            switch (pred)
            {
                case CriterionPredicate.Eq:
                    predSql = "=";
                    break;

                case CriterionPredicate.Gt:
                    predSql = ">";
                    break;

                case CriterionPredicate.GtEq:
                    predSql = ">=";
                    break;

                case CriterionPredicate.Lt:
                    predSql = "<";
                    break;

                case CriterionPredicate.LtEq:
                    predSql = "<=";
                    break;

                case CriterionPredicate.Neq:
                    predSql = "<>";
                    break;

                case CriterionPredicate.Null:
                    predSql = "is null";
                    hasValue = false;
                    break;

                case CriterionPredicate.NotNull:
                    predSql = "is not null";
                    hasValue = false;
                    break;

                case CriterionPredicate.StartsWith:
                case CriterionPredicate.EndsWith:
                case CriterionPredicate.Contains:
                    predSql = "like";
                    break;

            }

            return new Tuple<string, bool>(predSql, hasValue);
        }
Example #5
0
        string Quote(object val, CriterionPredicate pred)
        {
            var  res         = new StringBuilder();
            bool needQuotes  = false;
            bool escapedLike = false;
            bool sqlLike     = pred == CriterionPredicate.StartsWith || pred == CriterionPredicate.Contains ||
                               pred == CriterionPredicate.EndsWith;

            if (val != null)
            {
                string valString = Convert.ToString(val, CultureInfo.InvariantCulture);
                if (IsNumber(val))
                {
                    res.Append(valString);
                }
                else
                {
                    Type objType = val.GetType();
                    objType = Nullable.GetUnderlyingType(objType) ?? objType;

                    if (typeof(bool) == objType)
                    {
                        res.Append((bool)val ? "1" : "0");
                    }
                    else
                    {
                        needQuotes = true;
                        res.Append(SqlCleanString(valString, sqlLike, ref escapedLike));
                    }
                }
            }

            if (pred == CriterionPredicate.StartsWith)
            {
                res.Append('%');
            }
            else if (pred == CriterionPredicate.Contains)
            {
                res.Append('%');
                res.Insert(0, '%');
            }
            else if (pred == CriterionPredicate.EndsWith)
            {
                res.Insert(0, '%');
            }

            if (needQuotes || sqlLike)
            {
                res.Append('\'');
                res.Insert(0, '\'');
                if (_unicode)
                {
                    res.Insert(0, 'N');
                }

                if (escapedLike)
                {
                    res.AppendFormat(" escape '{0}'", EscapeSlqLike);
                }
            }

            return(res.ToString());
        }
        public QueryPaggedBase <TItem, TResult> AddFiltering(Expression <Func <TItem, object> > memberSelector, object criterion, CriterionPredicate predicate = CriterionPredicate.Eq, bool ignoreCase = false)
        {
            if (_filtering == null)
            {
                _filtering = new FilteringCollection();
            }
            _filtering.Add(FilteringDescriptor.Get(memberSelector, criterion, predicate, ignoreCase));

            return(this);
        }
        public QueryPaggedBase <TItem, TResult> AddFiltering(string field, object criterion, CriterionPredicate predicate = CriterionPredicate.Eq, bool ignoreCase = false)
        {
            if (_filtering == null)
            {
                _filtering = new FilteringCollection();
            }
            _filtering.Add(new FilteringDescriptor()
            {
                Field = field, Predicate = predicate, Criterion = criterion, IgnoreCase = ignoreCase
            });

            return(this);
        }