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.