-
Notifications
You must be signed in to change notification settings - Fork 2
Description
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()