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