动态在哪里查询多个过滤器值

时间:2014-07-15 07:34:51

标签: c# linq lambda expression where-clause

我正在尝试创建一个动态where查询,接受多个过滤器值。我已经有一个用于单个过滤器的工作过滤器

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);
    }

我需要在这里传递多个过滤器,以便它们通过OR连接。我尝试创建一个接受字典并迭代调用此方法但无法加入查询结果的方法。

0 个答案:

没有答案