using System; using System.Linq; using System.Linq.Expressions; namespace Umbraco.Core { internal static class ExpressionExtensions { public static Expression> True() { return f => true; } public static Expression> False() { return f => false; } public static Expression> Or(this Expression> left, Expression> right) { var invokedExpr = Expression.Invoke(right, left.Parameters.Cast()); return Expression.Lambda> (Expression.OrElse(left.Body, invokedExpr), left.Parameters); } public static Expression> And(this Expression> left, Expression> right) { var invokedExpr = Expression.Invoke(right, left.Parameters.Cast()); return Expression.Lambda> (Expression.AndAlso(left.Body, invokedExpr), left.Parameters); } } }