2013-06-13 14 views
15

Załóżmy, że mam Tes Klasa:Łączy dwa Func delegatów

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

Oświadczam poniżej zmiennych, zbyt

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

Czy istnieje jakiś sposób, aby złączyć te zmienne (AND/OR) i umieścić wynik w trzeciej zmiennej? na przykład:

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

lub

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

Odpowiedz

34

oraz:

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

czyli

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

To musi być wyżej w wynikach wyszukiwania, ponieważ wszystkie góry odpowiedzi wymagają wkręcania z Expression t ypes. – moarboilerplate

+0

Pięknie proste. – Holf

+0

Najlepsza odpowiedź, elegancka! –