Como posso combinar duas expressões lambda sem usar o método Invoke?

Eu tenho duas expressões lambda:

Expression<Func<MyEntity, bool>> e1 = i=>i.FName.Contain("john");

e

Expression<Func<MyEntity, bool>> e2=i=>i.LName.Contain("smith");

o tipo i, vem das minhas entidades poco, que não podem ser usadas com invocação. Eu quero combinar isso em tempo de execução.

Eu quero combinar essas expressões em tempo de execução de forma semelhante como:

Expression<Func<MyEntity, bool>> e3 = Combine(e1,e2);

questionAnswers(2)

yourAnswerToTheQuestion