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();
        }
    }
예제 #2
0
        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());
        }
예제 #3
0
        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));
    }
예제 #5
0
 public static string getSign(FilterOps op)
 {
     return(_signs[op]);
 }