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