public override Expression HandleOperation( QueryableFilterContext context, IFilterOperationField field, IValueNode value, object?parsedValue) { if (context.RuntimeTypes.Count > 0 && context.RuntimeTypes.Peek().TypeArguments is { Count : > 0 } args&& parsedValue is bool parsedBool) { Expression?property = context.GetInstance(); Expression expression; if (parsedBool) { expression = FilterExpressionBuilder.Any(args[0].Source, property); } else { expression = FilterExpressionBuilder.Not( FilterExpressionBuilder.Any(args[0].Source, property)); } if (context.InMemory) { expression = FilterExpressionBuilder.NotNullAndAlso(property, expression); } return(expression); } throw ThrowHelper.Filtering_CouldNotParseValue(this, value, field.Type, field); }
protected override Expression HandleListOperation( QueryableFilterContext context, IFilterField field, ObjectFieldNode node, Type closureType, LambdaExpression lambda) => FilterExpressionBuilder.Any(closureType, context.GetInstance(), lambda);