2013-06-13 8 views
15

は、私はthesというクラスを持っていると仮定します。を連結2つのFuncデリゲート

public class Order 
{ 
    int OrderId {get; set;} 
    string CustomerName {get; set;} 
} 

私はあまりにも

Func<Order, bool> predicate1 = t=>t.OrderId == 5 ; 
Func<Order, bool> predicate2 = t=>t.CustomerName == "Ali"; 

、変数の下に宣言任意の(AND/ORで)これらの変数を連結する方法とプットがあります3番目の変数の結果?例えば :

Func<Order, bool> predicate3 = predicate1 and predicate2; 

または

Func<Order, bool> predicate3 = predicate1 or predicate2; 

答えて

34

そして:

Func<Order, bool> predicate3 = 
    order => predicate1(order) && predicate2(order); 

または:

Func<Order, bool> predicate3 = 
    order => predicate1(order) || predicate2(order); 
+1

これはトップのすべて以来、検索結果に高くする必要が答えは式tで回り込む必要がありますypes。 – moarboilerplate

+0

美しくシンプルです。 – Holf

+0

ベストアンサー、エレガント! –

関連する問題