2013-06-13 19 views
15

Ben thes Sınıf olduğunu varsayalım:Concatenate iki Func delegeler

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

Ben değişkenler aşağıda beyan da

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

(VE/VEYA ile) bu değişkenleri bitiştirmek herhangi bir yolu var mı ve koyun 3. değişkende sonuç mu?

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

veya

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

cevap

34

Ve:

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

Veya: örneğin

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

Bu üst tüm beri arama sonuçlarında daha yüksek olması gerekir cevaplar İfade t ile etrafında vidalama gerektirir Dosya türleri. – moarboilerplate

+0

Çok basit. – Holf

+0

En iyi cevap, zarif! –