I am completely lost on this one. I have a piece of code that does what I need when implemented like this:
return filters.Add(m => m.Metadata.RecordId).IsEqua
I'm not sure what exactly you want there as an output (bool, int and comparing),
But this should get you on the right track...
public static void Test(string propertyPath)
{
var props = propertyPath.Split('.');
Expression parameter = Expression.Parameter(typeof(TestObj), "x");
Expression property = parameter;
foreach (var propertyName in props)
property = Expression.Property(property, propertyName);
Expression> lambdaExpression =
Expression.Lambda>(property, parameter as ParameterExpression);
Add(lambdaExpression);
}
static void Add(Expression> paramExp)
{
TestObj obj = new TestObj { Metadata = new Metadata { RecordId = 1, Name = "test" } };
var id = paramExp.Compile()(obj);
}
And you can also check this post of Jon's which nicely describes how that works...
Use reflection to get lambda expression from property Name