using System.Linq.Expressions;
public static void Main()
ParameterExpression paramExp = Expression.Parameter(typeof(Context), "c");
MemberExpression memExp = CreateMemberExpression(paramExp, "User.Name.Length");
Console.WriteLine(memExp);
private static MemberExpression CreateMemberExpression(ParameterExpression param, string path)
string[] split = path.Split('.');
return (MemberExpression)split.Aggregate<string, Expression>(param, (exp, mth) => Expression.Property(exp, mth));
public User User { get; set; }
public string Name { get; set; }