加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 将代理与OR运算符组合在一起

发布时间:2020-12-15 17:20:28 所属栏目:百科 来源:网络整理
导读:使用 LinqToSQL在两个不同的表中查找值,并根据结果集中的内容组合结果. 如何根据给定条件组合两个Func: // a filter for a LinqToSQL query: FuncComputerDetail,bool filter; // declare the default filter filter = x = x.ComputerName.Contains(searchT
使用 LinqToSQL在两个不同的表中查找值,并根据结果集中的内容组合结果.

如何根据给定条件组合两个Func:

// a filter for a LinqToSQL query:
 Func<ComputerDetail,bool> filter;

 // declare the default filter
 filter = x => x.ComputerName.Contains(searchTerm);

那么如果条件满足,它想将下面的lambda添加到上面的lambda:

x => computernames.Contains(x.ComputerName)

所以它会导致:

x => computernames.Contains(x.ComputerName)) ||
      x.ComputerName.Contains(searchTerm);

使用plus运算符创建多播委托几乎就是这样做的,
但是,在这种情况下,我不确定如何应用OR(||):

filter += computernames.Contains(x.ComputerName)

注意:computernames是List< String>,ComputerName是ComputerDetail的一个属性,它是一个表示LinqToSQL中的视图的类

解决方法

如果它是LINQ to SQL,则不希望组合两个委托 – 您希望组合两个表达式树.否则,您的所有过滤都将在客户端完成.

如果是这种情况,我相信你基本上只需要PredicateBuilder – 使用predicate1.Or(predicate2)来组合两个谓词.

如果您真的需要委托表单,则可以使用相同的代码并仅更改所有签名以使用委托而不是表达式树.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读