2016-11-14 41 views
0

結合謂語什麼是基於一些條件在後期的.Net 2.0

Predicate<Foo> predicate = p1 => (p1.IsActive) && p1.Type != "BR"; 

Predicate<Foo> datePredicate = p1 => (p1.Year) == DateTime.Now.Year; 

像我們用於Expression.AndAlso

我有一個謂語做結合謂詞的方式我想將兩者結合起來,這樣可以將結果謂詞傳遞給接受單個謂詞參數的方法。

predicate = predicate.????(datePredicate); 

那麼怎麼辦呢?

+1

http://stackoverflow.com/a/1248263/106159 –

+0

您還可以看看LinqKit(你需要引用它)。滾動到組合表達式:http://www.albahari.com/nutshell/linqkit.aspx – mortb

+1

謂詞 datePredicateAnd = p(> predicate(p)&& datePredicate(p)) – Damith

回答

1

您可以將謂詞如下

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

即使這也會工作'predicate = p =>謂詞(p)&& datePredicate(p);'但是這會導致StackOverflow異常,因爲它會嘗試調用自己導致StackOverflow。 「訪問修改後的關閉」的完美示例 –