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.