表达式树 - 将 Linq 查询与 AND 或 Ors 组合在一起



>我有一个问题,如下所示:

var customers = from c in ctx.Customers;

从UI动态地传递过滤器列表场景 1."和"

groupOp = "AND"
filter 1: where c.ID == 1
filter 2: where c.Name == 'XYZ'

我需要的是一种结合方式所以最终结果是:

var filterList = from c in ctx.Customers
                 where c.ID == 1
                 && c.Name == 'XYZ'

场景 2."或"

同样的问题

VaR 客户 = 来自 CTX 中的 C。客户;

从UI动态地传递过滤器列表

groupOp = "OR"
filter 1: where c.Name == 'ABC'
filter 2: where c.Name == 'XYZ'

我需要的是一种结合方式所以最终结果是:

var filterList = from c in ctx.Customers
                 where c.Name == 'ABC'
                 || c.Name == 'XYZ'

我怎样才能动态地将 IQueryable 与 AND 或 OR 组合在一起。目前我不需要组合 AND 和 OR,所以它只是 AND 或 OR。任何帮助都非常感谢...

使用 PredicateBuilder,即

var predicate = PredicateBuilder.False<Customer>();
foreach (var filter in filters)
{
    predicate = predicate.Or(filter);
}
return ctx.Customers.Where(predicate);

如果不想在代码中手动生成所有筛选器表达式,则可以从字符串使用动态 Linq 库生成表达式。

最新更新