>我有一个问题,如下所示:
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 库生成表达式。