【发布时间】:2010-12-21 22:46:11
【问题描述】:
假设我有以下代码(上下文缩小以限制问题范围)
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);
}
}
我想将它们重写为这样的东西(当然不会编译
public static IEnumerable<Color> GetThemColors(){
GetThePrimaryIds().Select(id=>yield return GetColorById(id));
GetTheOtherIds().Select(id=>yield return GetOtherColorsById(id));
}
关键在于,在我的第一个 sn-p 中,我有两个 foreach 枚举器产生,我不知道如何在 linq 中做到这一点而不会失去我的延迟加载功能。
【问题讨论】:
标签: c# .net linq lazy-loading yield