Пример #1
0
        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));
        }
Пример #2
0
        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));
        }