La mejor solución es declarar una clase que contenga tres propiedades llamadas Car, CarsPerson y Person, y devolver desde el select instancias de esa clase, en lugar de devolver un tipo anónimo. De esa manera puedes declarar el tipo devuelto como IQueryable<laClase>,
y se puede devoler sin problemas a otro método.
La alternativa es devolver un tipo dynamic o usar reflexión sobre el object. Ninguna de estas opciones es igual de robusta que la de sustituir el tipo anónimo por un tipo con nombre.