¿Reescribir este rendimiento para cada rendimiento a un rendimiento de linq?

Digamos que tengo el siguiente código (el contexto se reduce para mantener el alcance de la pregunta limitado)

public static IEnumerable<Color> GetThemColors(){
    var ids = GetThePrimaryIds();
    foreach (int id in ids){
        yield return GetColorById(id);
    }
    ids = GetTheOtherIds();
    foreach (int id in ids){
        yield return GetOtherColorsById(id);
    }
}

Me gustaría reescribirlos a algo como esto (que, por supuesto, no compila

public static IEnumerable<Color> GetThemColors(){
    GetThePrimaryIds().Select(id=>yield return GetColorById(id));
    GetTheOtherIds().Select(id=>yield return GetOtherColorsById(id));       
}

El punto clave es que en mi primer fragmento tengo dos forumadores de rendimiento por cada uno, que no sé cómo hacer en linq sin perder mis funciones de carga perezosa.