【发布时间】:2016-11-14 08:37:49
【问题描述】:
像Expression.AndAlso 那样组合谓词的方式是什么
我有一个谓词
Predicate<Foo> predicate = p1 => (p1.IsActive) && p1.Type != "BR";
和
Predicate<Foo> datePredicate = p1 => (p1.Year) == DateTime.Now.Year;
基于某些条件,我想将两者结合起来,以便可以将结果谓词传递给接受单个谓词参数的方法。
predicate = predicate.????(datePredicate);
那么有什么办法呢?
【问题讨论】:
-
你也可以看看 LinqKit(你需要参考它)。滚动到组合表达式:albahari.com/nutshell/linqkit.aspx
-
谓词
datePredicateAnd = p =>(predicate(p) && datePredicate(p)) -
@MatthewWatson:当谓词类不存在时,我已经看到了这一点及其适用于 .Net 2.0。