将委托与 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>ComputerNameComputerDetail的属性,是一个表示LinqToSQL中视图的类

将委托与 OR 运算符合并

如果是

LINQ to SQL,则不希望合并两个委托 - 希望合并两个表达式树。否则,所有过滤都将在客户端完成。

如果是这样的话,我相信你基本上只需要PredicateBuilder - 使用predicate1.Or(predicate2)来组合两个谓词。

如果您确实想要委托表单,则可以使用相同的代码,只需更改所有签名以使用委托而不是表达式树。