Skip to content

Case insensitive  #3

@rajendra227

Description

@rajendra227

This is not working for me .. can some one help me here
protected override void Configure(IFilterConventionDescriptor descriptor)
{
descriptor
.AddDefaultOperations()
.UseQueryableProvider();

        descriptor.AddDefaults();
        descriptor.Provider(
            new QueryableFilterProvider(
                x => x
                    .AddDefaultFieldHandlers()
                    .AddFieldHandler<QueryableStringInvariantContainsHandler>()));

        IFilterConventionDescriptorExtensions.BindDefaultTypes(descriptor);
    }

public class QueryableStringInvariantContainsHandler : QueryableStringOperationHandler
{
#pragma warning disable CS8601 // Possible null reference assignment.
private static readonly MethodInfo _contains = typeof(string).GetMethod("IndexOf",
new[] { typeof(string), typeof(StringComparison) });
#pragma warning restore CS8601 // Possible null reference assignment.

    public QueryableStringInvariantContainsHandler(InputParser inputParser) : base(inputParser)
    {
    }

    protected override int Operation => DefaultFilterOperations.Contains;
    public override Expression HandleOperation(QueryableFilterContext context, IFilterOperationField field, IValueNode value, object parsedValue)
    {
        Expression property = context.GetInstance();
        if (parsedValue is string str)
        {
            return Expression.NotEqual(
                    Expression.Call(
                        property,
                        _contains,
                        Expression.Constant(str, typeof(string)),
                        Expression.Constant(StringComparison.InvariantCultureIgnoreCase, typeof(StringComparison))
                    ),
                    Expression.Constant(-1, typeof(int))
                );
        }
        throw new InvalidOperationException();
    }
}

in start up
.AddFiltering()
.AddConvention(
new FilterConventionExtension(
x => x.AddProviderExtension(
new QueryableFilterProviderExtension(
y => y.AddFieldHandler()))))
.AddQueryableCursorPagingProvider()

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions