using System; using System.Linq.Expressions; public class Test { public static Expression> Or( Expression> source, Expression> expression ) { if (source == null) return expression; var p = Expression.Parameter(typeof(T)); return (Expression>)Expression.Lambda( Expression.Or( Expression.Invoke(source, p) , Expression.Invoke(expression, p) ) , p ); } public static void Main() { Expression> a = x=>x > 5; Expression> b = x=>x < -5; var or = Or(a, b); var f = (Func)or.Compile(); for (int i = -10 ; i <= 10 ; i++) { Console.WriteLine("{0} - {1}", i, f(i)); } } }