将委托与 OR 运算符合并
本文关键字:运算符 合并 OR | 更新日期: 2023-09-27 18:10:01
使用 LinqToSQL 查找两个不同表中的值,并根据在哪个结果集中找到的结果组合结果。
如何根据给定条件组合两个函数:
// a filter for a LinqToSQL query:
Func<ComputerDetail, bool> filter;
// declare the default filter
filter = x => x.ComputerName.Contains(searchTerm);
然后,如果满足条件,它希望将以下 lambda 添加到上面的条件中:
x => computernames.Contains(x.ComputerName)
所以它都会导致:
x => computernames.Contains(x.ComputerName)) ||
x.ComputerName.Contains(searchTerm);
使用加号运算符创建多播委托似乎可以做到,但是,我不确定在这种情况下如何应用 OR (||(:
filter += computernames.Contains(x.ComputerName)
注意:computernames
是一个List<String>
,ComputerName
是ComputerDetail
的属性,是一个表示LinqToSQL中视图的类
如果是
LINQ to SQL,则不希望合并两个委托 - 希望合并两个表达式树。否则,所有过滤都将在客户端完成。
如果是这样的话,我相信你基本上只需要PredicateBuilder
- 使用predicate1.Or(predicate2)
来组合两个谓词。
如果您确实想要委托表单,则可以使用相同的代码,只需更改所有签名以使用委托而不是表达式树。