eri*_*200 9 c# silverlight functional-programming list
我有来自某个来源的物品(来自其他地方):
public class ItemsFromSource{
    public ItemsFromSource(string name){
        this.SourceName = name;
        Items = new List<IItem>();
    }
    public string SourceName;
    public List<IItem> Items;
}
现在在MyClass中,我有来自多个来源的项目(从其他地方填充):
public class MyClass{
    public MyClass(){
    }
    public List<ItemsFromSource> BunchOfItems;
}
有没有一种简单的方法可以一次遍历BunchOfItems中所有ItemsFromSources中的所有Items?即,像:
foreach(IItem i in BunchOfItems.AllItems()){
    // do something with i
}
而不是做
foreach(ItemsFromSource ifs in BunchOffItems){
    foreach(IItem i in ifs){
        //do something with i
    }
}
Dar*_*rio 16
那么,您可以使用linq函数SelectMany进行flatmap(创建子列表并将它们压缩成一个)的值:
foreach(var i in BunchOfItems.SelectMany(k => k.Items)) {}
你可以使用SelectMany:
foreach(IItem i in BunchOffItems.SelectMany(s => s.Items)){
    // do something with i
}