2013-06-13 12 views
15

Si supponga che ho thes Classe:concatenare due Func delegati

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

Dichiaro qui di seguito le variabili, anche

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

Esiste un modo che concatenare queste variabili (con e/o) e mettere il risultato in 3a variabile? per esempio:

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

o

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

risposta

34

E:

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

Oppure:

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

questo deve essere più in alto nei risultati di ricerca dal momento che tutti i top le risposte richiedono di aggirare l'espressione t IPI. – moarboilerplate

+0

Splendidamente semplice. – Holf

+0

La migliore risposta, elegante! –