在我的C#-Application中,我有一个Dictionary对象。当使用foreach迭代对象时,我自然会得到字典的每个元素。但我想只迭代某些元素,具体取决于MyValue属性的值。
class MyValue
{
public bool AmIIncludedInTheIteration { get; set; }
...
}
每当AmIIncludedInTheIteration为false时,foreach不会返回该项目。我知道我需要实现自己的迭代器并在某处覆盖Dictionary-Iterator。谁能在这里给我一个简短的HowTo?
提前致谢, 弗兰克
答案 0 :(得分:3)
在C#3及更高版本中,您可以使用(LINQ)扩展方法:
var myFilteredCollection = myCollection.Where( x => x.AmIIncludedInTheIteration );
foreach (var x in myFilteredCollection ) ...
答案 1 :(得分:0)
您必须实现自己的IEnumerator,然后才能控制MoveNext函数中返回的内容。
这应该给你一些可以从中开始的页面。
答案 2 :(得分:0)
我假设您要迭代字典中的值,您可以使用linq方法:
foreach(MyValue value in MyDictionary.Values.Where(i=>i.AmIIncludedInTheIteration ))
{
}
答案 3 :(得分:0)
或者在迭代字典时过滤它:
foreach (KeyValuePair<X, MyValue> element in dict.Where(x => x.Value.AmIIncludedInTheIteration)
{
// ...
}
只是一个想法......