using System.Linq.Expressions;
public static void Main()
string propertyForExpression = "Product.randomNumber";
var lam = ToLambda<OrderEntity>(propertyForExpression).Compile();
var oe = new OrderEntity();
oe.Product = new ProductEntity()
Console.WriteLine(lam(oe));
static Expression<Func<T, object>> ToLambda<T>(string propertyName)
var propertyNames = propertyName.Split('.');
var parameter = Expression.Parameter(typeof(T));
Expression body = parameter;
foreach (var propName in propertyNames)
body = Expression.Property(body, propName);
var convertedResult = Expression.Convert(body, typeof(object));
var func = Expression.Lambda<Func<T, object>>(convertedResult, parameter);
public int id { get; set; }
public string name { get; set; }
public ProductEntity Product { get; set; }
public class ProductEntity
public int id { get; set; }
public string productName { get; set; }
public string description { get; set; }
public int randomNumber { get; set; }