0

I am trying to create a dynamic where query that accepts multiple filter values. I already have a working filter generator for single filters

private Expression<Func<TRowType, bool>> BuildListFilter<TRowType>(string filterColumnName, IEnumerable<object> columnValues)
    {
        var rowParam = Expression.Parameter(typeof(TRowType), "r");
        var column = Expression.Property(rowParam, filterColumnName);

        BinaryExpression filter = null;
        foreach (var columnValue in columnValues)
        {
            var newFilterClause = Expression.Equal(column, Expression.Constant(columnValue));
            filter = filter != null ? Expression.Or(filter, newFilterClause) : newFilterClause;
        }

        return Expression.Lambda<Func<TRowType, bool>>(filter, rowParam);
    }

I need to pass multiple filters here such that they will be joined by OR. I tried creating a method that accepts a dictionary and iterate over it calling this method but could not join the query results.

IUnknown
  • 888
  • 7
  • 18

0 Answers0