微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

使用 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)来组合两个谓词.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐