【问题标题】:Combining Predicates in post .Net 2.0在 .Net 2.0 后组合谓词
【发布时间】: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);

那么有什么办法呢?

【问题讨论】:

标签: c# predicate func


【解决方案1】:

你可以如下组合谓词

Predicate<Foo> datePredicateAnd = p =>(predicate(p) && datePredicate(p));

【讨论】:

  • 尽管这也可以工作predicate = p =&gt; predicate(p) &amp;&amp; datePredicate(p);,但这会导致 StackOverflow 异常,因为它会尝试调用自身导致 StackOverflow。 Access to modified Closure.的完美示例
猜你喜欢
  • 2010-10-07
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
相关资源
最近更新 更多