public override QueryExpression VisitMatchText(MatchTextExpression expression, object argument) { PropertyInfo property = expression.TargetAttribute.Fields.Last().Property; if (IsCarId(property)) { throw new NotSupportedException("Partial text matching on Car IDs is not possible."); } return(base.VisitMatchText(expression, argument)); }
public override Expression VisitMatchText(MatchTextExpression expression, Type argument) { Expression property = Visit(expression.TargetAttribute, argument); if (property.Type != typeof(string)) { throw new InvalidOperationException("Expression must be a string."); } Expression text = Visit(expression.TextValue, property.Type); if (expression.MatchKind == TextMatchKind.StartsWith) { return(Expression.Call(property, "StartsWith", null, text)); } if (expression.MatchKind == TextMatchKind.EndsWith) { return(Expression.Call(property, "EndsWith", null, text)); } return(Expression.Call(property, "Contains", null, text)); }