Вы можете использовать LINQKit , чтобы развернуть выражения, которые у вас есть в других выражениях:
private static Expression> CreateDepartmentDtoUnexpanded = d => new DepartmentDto
{
Manager = CreatePersonDto.Invoke(d.Manager),
Employees = d.Employees.Select(employee => CreatePersonDto.Invoke(employee))
.ToList(),
};
public static Expression> CreateDepartmentDto = CreateDepartmentDtoUnexpanded.Expand();