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 }); }
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(); }
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); }
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); }