Пример #1
0
        public static Expression <Func <T, bool> > BuildBinaryExpression <T>(this Expression <Func <T, object> > expression, FilterCondition filterCondition, string value)
        {
            MemberExpression memberExpression = (expression.StripConvert().Body as MemberExpression);

            var propertyInfo = memberExpression.ToPropertyInfo();
            var resultType   = propertyInfo.PropertyType;
            var constValue   = resultType.Parse(value);
            var constant     = Expression.Constant(constValue, resultType);

            var parameter = Expression.Parameter(typeof(T));

            var property = Expression.Property(parameter, propertyInfo);
            var binaryExpressionBuilder = filterCondition.GetBinaryExpressionBuilder();
            var binaryExpression        = binaryExpressionBuilder(property, constant);

            return(Expression.Lambda <Func <T, bool> >(binaryExpression, parameter));
        }