public Expression GetSearchExpression() { try { var type = Convert.ChangeType(expression.Value, propertyToSearch.PropertyType); var converted = Expression.Constant(type); return(ComparableParserExpressionFactory.GetExpression(converted, parameterExpression, propertyToSearch, expression.Type)); } catch (Exception) { return(FalseComparison.ReturnsFalse); } }
public static Expression GetExpression(ConstantExpression value, ParameterExpression parameterExpression, PropertyInfo propertyToSearch, ComparisonType comparisonType) { switch (comparisonType) { case ComparisonType.NotEquals: case ComparisonType.Equals: case ComparisonType.GreaterThanOrEquals: case ComparisonType.GreaterThan: case ComparisonType.LessThanOrEquals: case ComparisonType.LessThan: return(ComparableParserExpressionFactory.GetExpression(value, parameterExpression, propertyToSearch, comparisonType)); case ComparisonType.StartsWith: return(GetLowweredExpression(value, parameterExpression, propertyToSearch, "StartsWith", new[] { typeof(string) })); case ComparisonType.EndsWith: return(GetLowweredExpression(value, parameterExpression, propertyToSearch, "EndsWith", new[] { typeof(string) })); default: return(GetLowweredExpression(value, parameterExpression, propertyToSearch, "StartsWith", new[] { typeof(string) })); } }