2013-06-13 15 views
15

Angenommen, ich thes Klasse haben:Concatenate zwei Func Delegierten

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

ich unter Variablen zu deklarieren, auch

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

Gibt es eine Möglichkeit, die diese Variablen verketten (mit AND/OR) und setzen das Ergebnis in der 3. Variable? zum Beispiel:

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

oder

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

Antwort

34

Und:

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

Oder:

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

Dies muss in den Suchergebnissen, da alle oben sein höher Antworten erfordern das Umdrehen mit Expression t ypes. – moarboilerplate

+0

Schön einfach. – Holf

+0

Beste Antwort, elegant! –