I\'m using LinqKit library which allows combining expressions on the fly.
This is a pure bliss for writing Entity Framewok data acess layer because several express
I created improved version of Mic answer:
if (input == null)
return input;
var field = input.Member as FieldInfo;
var prope = input.Member as PropertyInfo;
if ((field != null && field.FieldType.IsSubclassOf(typeof(Expression))) ||
(prope != null && prope.PropertyType.IsSubclassOf(typeof(Expression))))
return Visit(Expression.Lambda>(input).Compile()());
return input;
Main advantage is removal DynamicInvoke
that have big overhead and calling Invoke
only when I really need it.