2010-04-21 58 views
1

在我的C#中 - 應用程序,我有一個Dictionary對象。當使用foreach遍歷對象時,我自然會獲得字典的每個元素。但是我只想要迭代某些元素,具體取決於MyValue屬性的值。字典的自定義迭代器?

class MyValue 
{ 
    public bool AmIIncludedInTheIteration { get; set; } 
    ... 
} 

每當AmIIncludedInTheIteration爲false時,該項目不應以foreach返回。我知道我需要實現自己的迭代器,並在某處重寫Dictionary-Iterator。這裏有人能給我一個簡短的指導嗎?

由於提前, 弗蘭克

+0

您使用的是什麼版本的C#? – 2010-04-21 14:31:27

回答

3

在C#3及以上的,你可以使用(LINQ)擴展方法:

var myFilteredCollection = myCollection.Where(x => x.AmIIncludedInTheIteration); 

foreach (var x in myFilteredCollection) ... 
0

我假設你想遍歷在你的字典中的值,你可以使用LINQ方法是:

foreach(MyValue value in MyDictionary.Values.Where(i=>i.AmIIncludedInTheIteration)) 
{ 

} 
0

或者迭代的字典,當你將其過濾:

foreach (KeyValuePair<X, MyValue> element in dict.Where(x => x.Value.AmIIncludedInTheIteration) 
{ 
    // ... 
} 

只是一個想法...