As Richard's solution is working fine there's no practical need for this, but in case you're interested, for the purpose of learning about building Expressions: I answered a same, earlier question with a solution that does this without the use of ExpressionVisitor: Mapping expressions Expression<Func<UserVM, object>> to Expression<Func<User, object>>[^]
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson