コード例 #1
0
        void ISearchValueVisitor.Visit(UriSearchValue uri)
        {
            EnsureArg.IsNotNull(uri, nameof(uri));

            switch (_modifier)
            {
            case null:
                _outputExpression = Expression.Equals(FieldName.Uri, _componentIndex, uri.Uri);
                break;

            case SearchModifierCode.Above:
                _outputExpression = Expression.And(
                    Expression.EndsWith(FieldName.Uri, _componentIndex, uri.Uri, false),
                    Expression.NotStartsWith(FieldName.Uri, _componentIndex, KnownUriSchemes.Urn, false));
                break;

            case SearchModifierCode.Below:
                _outputExpression = Expression.And(
                    Expression.StartsWith(FieldName.Uri, _componentIndex, uri.Uri, false),
                    Expression.NotStartsWith(FieldName.Uri, _componentIndex, KnownUriSchemes.Urn, false));
                break;

            default:
                ThrowModifierNotSupported();
                break;
            }
        }