Reescreva isso para aumentar o rendimento para um rendimento linear?

Digamos que eu tenha o seguinte código (contexto reduzido para manter o escopo da questão 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);
    }
}

Eu gostaria de reescrevê-los para algo assim (que obviamente não compila

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

O ponto chave é que no meu primeiro trecho eu tenho dois enumeradores foreach cedendo, o que eu não sei como fazer no linq sem perder meus recursos de carregamento lento.

questionAnswers(1)

yourAnswerToTheQuestion