public IFilterExpressionBuilder <TEntity> AddFilter(
            string property, FilterExpressionBuilderCallback <TEntity, string> builder)
        {
            var providerBuilder    = this.CreateProviderBuilder();
            var expressionProvider = new StringFilterExpressionProvider <TEntity>(
                f => builder(f, providerBuilder).Build());

            this.filters.Add(property, expressionProvider);
            return(this);
        }
        public IFilterExpressionBuilder <TEntity> AddTypedFilter <TFilter>(
            string property,
            Func <string, TFilter> conversion,
            FilterExpressionBuilderCallback <TEntity, TFilter> builder)
        {
            var providerBuilder    = this.CreateProviderBuilder();
            var expressionProvider = new GenericFilterExpressionProvider <TEntity, TFilter>(
                f => builder(f, providerBuilder).Build(),
                conversion);

            this.filters.Add(property, expressionProvider);
            return(this);
        }
 public IFilterExpressionBuilder <TEntity> AddTypedFilter <TFilter>(
     string property, FilterExpressionBuilderCallback <TEntity, TFilter> builder) =>
 this.AddTypedFilter(property, ConvertToFilterType <TFilter>, builder);