I'm trying to make a helper method that creates a dynamic selector using expression tree.
The objective would be converting this selector into an expression tree.
var list = new User[0].AsQueryable();
var q = list.Select(u => new { User = u, Address = "Address X", Fax = "Fax Y" });
In the expression tree visualizer it shows something like:
Here is what I have tried so far:
var userParam = Expression.Parameter(typeof(User), "u");
var obj = new { User = new User(), Address = string.Empty, Fax = string.Empty };
var q = list.Select(DynamicSelect(obj, userParam));
static Expression<Func<User, T>> DynamicSelect<T>(T obj, ParameterExpression userParam)
{
var user = Expression.Lambda<Func<User, User>>(/* ?? stuck here */, userParam);
var newExpression = Expression.New(
typeof(T).GetConstructor(new []{typeof(User), typeof(string), typeof(string)}),
user,
Expression.Constant("Address X"),
Expression.Constant("Fax Y"),
);
return Expression.Lambda<Func<User, T>>(newExpression, userParam);
}