Combinando duas expressões lambda em c #

Dada uma estrutura de classes como esta:

public class GrandParent
{
    public Parent Parent { get; set;}
}
public class Parent
{
    public Child Child { get; set;}
}

public class Child
{
    public string Name { get; set;}
}

e a assinatura do método a seguir:

Expression<Func<TOuter, TInner>> Combine (Expression<Func<TOuter, TMiddle>>> first, Expression<Func<TMiddle, TInner>> second);

Como posso implementar o dito método para que eu possa chamá-lo assim:

Expression<Func<GrandParent, Parent>>> myFirst = gp => gp.Parent;
Expression<Func<Parent, string>> mySecond = p => p.Child.Name;

Expression<Func<GrandParent, string>> output = Combine(myFirst, mySecond);

tal que a saída acaba como:

gp => gp.Parent.Child.Name

Isso é possível?

O conteúdo de cada Func será sempre umMemberAccess. Eu prefiro não acabar comoutput sendo uma chamada de função aninhada.

obrigado

questionAnswers(8)

yourAnswerToTheQuestion