C#foreach包含Dictionary <string,objecttype =“”> </string,>中包含的对象的属性

时间:2009-07-20 14:51:11

标签: c# collections

是否可以直接在C#中的Dictionary集合中存储的对象的属性进行迭代?

例如,我有一个名为字段Dictionary<String, Field>的词典。 Field对象有一个Data属性,它的类型是XmlDataDocument,所以我想做类似的事情,

foreach(XmlDataDocument fieldData in Fields.Values.Data){

}

我知道这非常简单,因为当我在Field对象上进行迭代时我需要做的就是,

XmlDataDocument fieldData = field.Data;

在Field itteration中但如果有更快的方法,我想知道: - )

2 个答案:

答案 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 ); 
   }