Concatenate two Func delegates

2019-03-17 23:02发布

问题:

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;

回答1:

And:

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

Or:

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