是否可以直接在C#中的Dictionary集合中存储的对象的属性进行迭代?
例如,我有一个名为字段Dictionary<String, Field>
的词典。 Field对象有一个Data属性,它的类型是XmlDataDocument,所以我想做类似的事情,
foreach(XmlDataDocument fieldData in Fields.Values.Data){
}
我知道这非常简单,因为当我在Field对象上进行迭代时我需要做的就是,
XmlDataDocument fieldData = field.Data;
在Field itteration中但如果有更快的方法,我想知道: - )
答案 0 :(得分:5)
在C#3.0中:
foreach (var data in Fields.Values.Select(x => x.Data))
{
}
但这并不是“更快”。
答案 1 :(得分:1)
是的,根据Dictionary创建一个自定义集合,然后将自己的迭代器添加到它......
public class MyFieldCollection: Dictionary<string, Field>
{
public IEnumerable<XmlDataDocument> Data
{
foreach(Field f in this.Values)
yield return f.Data;
}
}
然后在客户端代码中,您需要做的就是
MyFieldCollection MFC = new MyFieldCollection();
foreach (XmlDataDocument doc in MFC.Data)
{
// DoWhatever (doc );
}