using System.Linq.Expressions;
public static void Main()
var parameter = Expression.Parameter(typeof(Bar), "a");
var bazProp = typeof(Bar).GetProperty(nameof(Bar.Baz));
var body = Expression.GreaterThan(
Expression.MakeMemberAccess(parameter, bazProp),
Expression.Constant(55));
Expression<Func<Bar, bool>> foo2
= Expression.Lambda<Func<Bar, bool>>(body, new[] { parameter });
var result1 = foo2.Compile().Invoke(new Bar() { Baz = 50 });
var result2 = foo2.Compile().Invoke(new Bar() { Baz = 60 });
Console.WriteLine(result1);
Console.WriteLine(result2);
public int Baz { get; set; }