private static Delegate MergeLambdasAndCompile(IList<LambdaExpression> expressions)
{
if (expressions.Count == 0)
{
return null;
}
LambdaExpression lambda = expressions[0];
for (int i = 1; i < expressions.Count; i++)
{
InvocationExpression invoked = Expression.Invoke(expressions[i], lambda.Body);
lambda = Expression.Lambda(invoked, lambda.Parameters);
}
return lambda.Compile();
}
}