¿Cómo reutilizo una expresión en un solo objeto en otra expresión?

Siento que me falta algo simple, pero no he encontrado la documentación que responde a mi pregunta.

Recientemente he estado descomponiendo algunas de las proyecciones de linq en expresiones reutilizables. Funciona muy bien cuando se opera en una colección, pero parece que no puedo entender cómo aplicar una expresión a un solo objeto en otra expresión. A continuación se muestra un ejemplo de lo que estoy tratando de lograr:

public class Person
{
    public string ID { get; set; }
    public string Name { get; set; }
}

public class PersonDto
{
    public string ID { get; set; }
    public string Name { get; set; }
}

public class Department
{
    Person Manager { get; set; }
    List<Person> Employees { get; set; }
}

public class DepartmentDto
{
    PersonDto Manager { get; set; }
    List<PersonDto> Employees { get; set; }
}

public Expression<Func<Person, PersonDto>> CreatePersonDto = p => new PersonDto
{
    ID = p.ID,
    Name = p.Name
};

public Expression<Func<Department, DepartmentDto>> CreateDepartmentDto = d => new DepartmentDto
{
    Manager = d.Manager // How do I transform this `Person` using `CreatePersonDto`
    Employees = d.Employees.Select(CreatePersonDto) //Does not work either
};

EDITAR: Para ser claros, estoy usando Linq-to-Entities que necesita usar esta Expresión para generar una declaración SQL. Como resultado, no puedoCompile la expresión de unFunc ya que podría usar Linq-to-Objects.

Respuestas a la pregunta(2)

Su respuesta a la pregunta