2010-04-21 64 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) 
{ 
    // ... 
} 

只是一个想法...