public static ExpressionType ToExpressionType(this FilterOps operand) { switch (operand) { case FilterOps.GreaterThan: return(ExpressionType.GreaterThan); case FilterOps.LessThan: return(ExpressionType.LessThan); case FilterOps.Equal: return(ExpressionType.Equal); default: throw new NotSupportedException(); } }
private string getWhere() { StringBuilder sb = new StringBuilder(); //if (_queryParams != null && _queryParams.Count > 0 && _isSourceTable) //{ // foreach (string key in _queryParams.Keys) // { // sb.Append(" and "); // sb.Append(key); // sb.Append("="); // sb.Append(_queryParams[key]); // } //} if (_filterRules != null && _filterRules.Count > 0) { foreach (FilterRule fr in _filterRules) { if (string.IsNullOrEmpty(fr.op)) { continue; } FilterOps op = FilterOpSigns.parse(fr.op); if (op == FilterOps.nofilter) { continue; } sb.Append(" and "); sb.Append(fr.field); sb.Append(FilterOpSigns.getSign(op)); switch (op) { case FilterOps.isnull: case FilterOps.notnull: continue; } sb.Append(" '"); switch (op) { case FilterOps.contains: case FilterOps.endwith: sb.Append("%"); break; } sb.Append(fr.value); switch (op) { case FilterOps.contains: case FilterOps.beginwith: sb.Append("%"); break; } sb.Append("' "); } } if (sb.Length > 0) { sb.Remove(0, " and ".Length); } return(sb.ToString()); }
public static string getSign(string op) { FilterOps fop = parse(op); return(getSign(fop)); }
public Expression <Predicate <T> > GetFilterPredicate <T, R>(Expression <Func <T, R> > selector, FilterOps operand, R value) { var parameter = selector.Parameters[0]; var left = selector.Body; var right = Expression.Constant(value); var binaryExpression = Expression.MakeBinary(operand.ToExpressionType(), left, right); return(Expression.Lambda <Predicate <T> >(binaryExpression, parameter)); }
public static string getSign(FilterOps op) { return(_signs[op]); }