Объединение нескольких выражений для динамического создания выражения выбора, содержащего выражения в качестве геттеров

При вводе двух выражений, например:

Expression<Func<Customer,string>> nameExpression = x=>x.Name;
Expression<Func<Customer,string>> nameExpression = x=>x.MarketSegment.Name;

и

IQueryable<Customer> query = ..//fetch from dbContext;

Я хочу динамически создать выражение, которое выбирает эти свойства из запроса.

конечный результат должен быть выполнен следующим образом:

Expression<IQueryable<Customer>,IQueryable<dynamic>> query = query.Select(x=>new{
  x=>x.Name,
  x=>x.MarketSegment.Name
});

Я понял, что Expression.New может быть вариантом в этот вопрос, но я не могу понять, как передать ему выражения.


person Michiel Cornille    schedule 02.12.2016    source источник
comment
возможно, это поможет: Объединить несколько похожих выражений SELECT в одно выражение   -  person esiprogrammer    schedule 02.12.2016
comment
Спасибо, мне удалось заставить его работать, используя посетитель выражения для привязки x из запроса select к параметру x в теле выражений, переданных в качестве входных данных. Я постараюсь опубликовать подробный ответ с некоторыми примерами кода позже, когда мы все это очистим.   -  person Michiel Cornille    schedule 05.12.2016
comment
Привет @MichielCornille, не могли бы вы опубликовать свои примеры кода, пожалуйста? Спасибо!   -  person David    schedule 19.11.2018
comment
Это было 2 года назад, я больше не работаю в компании с закрытым исходным кодом, для которой написал это. Извини!   -  person Michiel Cornille    schedule 20.11.2018