Umschreiben dieser foreach Ausbeute auf eine linq Ausbeute?

Angenommen, ich habe den folgenden Code (der Kontext wurde eingegrenzt, um den Umfang der Fragen einzuschränken)

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

Ich würde sie gerne so umschreiben (was natürlich nicht kompiliert wird)

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

Der entscheidende Punkt ist, dass ich in meinem ersten Snippet zwei foreach-Enumeratoren habe, die ergeben, was ich in linq nicht tun kann, ohne meine Funktionen zum verzögerten Laden zu verlieren.