Concatenate two Func delegates

Masoud picture Masoud · Jun 13, 2013 · Viewed 8.4k times · Source

Assume that I have thes Class:

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

I declare below variables, too

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

Is there any way that concatenate these variables(with AND/OR) and put the result in 3rd variable? for example:

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

or

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

Answer

Steven picture Steven · Jun 13, 2013

And:

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

Or:

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