如何根据用户选择的操作执行 SearchFilter 逻辑运算符AND
和OR
编程?
如果用户给出这样的选择"[To]ContainsSubstring'Ram' OR [To]containssubstring'lak'
如何执行呢?
如何根据用户选择的操作执行 SearchFilter 逻辑运算符AND
和OR
编程?
如果用户给出这样的选择"[To]ContainsSubstring'Ram' OR [To]containssubstring'lak'
如何执行呢?
您可以将单个过滤器定义为表达式,然后根据用户的选择组合它们。
编辑:我提议的是创建谓词(据我所知,现在已弃用,建议使用基本相同的 Func),然后将它们组合成一个表达式并将其应用于您必须过滤的列表。
我在这里找到的一个例子:组合多个谓词
我过去所做的是根据用户的选择组合谓词,然后将它们编译成一个表达式,然后将其用作 Linq Where 扩展方法的参数。
所以,一个例子(不确定它是否会编译现在写它:):
List<Customer> list = new List<Customer>();
List<Func<Customer,bool>> predicateList = new List<Func<Customer,bool>>();
if(/*user choice condition*/)
{
predicateList.Add(c => c.Name.Contains("test"));
}
if (/*user choice condition*/)
{
predicateList.Add(c => c.Name.Contains("test") || c.Description.Contains("buyer"));
}
//etc.
Expression<Func<IWorkItem, bool>> filterExpression = c => whereClausePredicates.All(pred => pred(c));
var filteredCustomers = list.Where(filterExpression.Compile());