2009-07-20 6 views
1

C#のディクショナリコレクションに格納されているオブジェクトのプロパティを直接反復処理できますか?ディクショナリ内に含まれるオブジェクトのプロパティをforeach over <String、ObjectType>

たとえば、Fields of type Dictionary<String, Field>という辞書があります。 Fieldオブジェクトは、私のような何かをしたいと思いますので、型XmlDataDocumentのあるデータ、

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

} 

のプロパティ私はそれが代わりになるオブジェクトフィールド上itteratingときに私がする必要があるでしょう、すべてのため、非常に簡単です知っているがありますそれを行うための迅速な方法があるかどう

答えて

5

です:

foreach (var data in Fields.Values.Select(x => x.Data)) 
{ 
} 

それはしかしどんな "速く" ではありません。

+0

10秒後に私を殴る:D –

1

はい、辞書に基づいてカスタムコレクションを作成し、その後に、独自のイテレータを追加:-)フィールドitteration内

XmlDataDocument fieldData = field.Data; 

は、しかし、私が知りたいのですがそれ...

クライアントコードで次に
public class MyFieldCollection: Dictionary<string, Field> 
    { 
     public IEnumerable<XmlDataDocument> Data 
     { 
      foreach(Field f in this.Values) 
       yield return f.Data; 
     } 
    } 

あなたがする必要があるのはC#3.0では

MyFieldCollection MFC = new MyFieldCollection();  
    foreach (XmlDataDocument doc in MFC.Data) 
    { 
     // DoWhatever (doc); 
    } 
関連する問題