使用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
答案 0 :(得分:2)
如果它是LINQ to SQL,您不希望组合两个委托 - 您想要组合两个表达式树。否则,您的所有过滤都将在客户端完成。
如果是这种情况,我相信你基本上只需要PredicateBuilder
- 使用predicate1.Or(predicate2)
来组合两个谓词。
如果确实想要委托表单,您可以使用相同的代码,只需更改所有签名即可使用委托而不是表达式树。