Como reutilizar uma expressão em um único objeto em outra expressão

Sinto que estou perdendo algo simples, mas não encontrei a documentação que responde à minha pergunta.

Recentemente, decomponho algumas das projeções do linq em expressões reutilizáveis. Ele funciona muito bem ao operar em uma coleção, mas não consigo descobrir como aplicar uma expressão a um único objeto em outra expressão. Abaixo está um exemplo do que estou tentando realizar:

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
};

EDIT: Para ficar claro, estou usando o Linq-to-Entities que precisa usar essa expressão para gerar uma instrução SQL. Como resultado, não possoCompile a expressão para umFunc como eu poderia usar o Linq-to-Objects.

questionAnswers(2)

yourAnswerToTheQuestion