私はオブジェクトのツリーを持っていますMyNode
:
public class MyNode
{
public int Type { get; set; }
public List<MyNode> Children { get; set; }
}
MyNode myRootNode;
// initializing a tree structure
したがって、次を除くすべてのノードを削除する必要があります
Type
プロパティが等しいノードint myType
Type
プロパティが等しい任意のレベル ノードの子ノードに含まれるノードint myType
私のやり方:
bool Filter(MyNode node, MyNode parentNode, int type)
{
bool isFound = false;
if (node.Type == type)
isFound = true; // There's type
foreach (MyNode child in node.Children)
{
if (FilterTree(child, node, type))
isFound = true; // There is child node who has this type
}
// If there aren't this type neither any of its children has it
if (!isFound)
{
parentNode.Children.Remove(node);
}
return isFound;
}
例外がCollection was modified; enumeration operation may not execute.
あります。これは、リスト内の要素を削除したためだと思います。それを正しい方法で行う方法はありますか?または、私は何を間違っていますか?