我有一个hierarchynode类型的“superior object”,它将具有相同类型hierarchynode的child nodes(每个子节点可能都有自己的子节点)。
我应该从'superior object'读取请求的父节点的子节点所以我的代码如下(caller--superiorobject.identifyinfsubnodeofrequestednode(…))。但是,如果执行了循环,并且也得到了并非所有代码返回值异常,则foreach循环eventhough中的stopRecursiveCall为false如何解决此问题并返回childnodes,或者是否有其他更好的解决方案谢谢

public List<HierarchyNode> IdentifySubNodeOfRequestedNode(int reqstedId, Boolean stopRecursiveCall)
{
    if (this.UserId == reqstedId)
    {
        stopRecursiveCall = true;
        return this.ChildNodes;
    }

    foreach (HierarchyNode childNode in this.ChildNodes)
    {
         childNode.IdentifySubNodeOfRequestedNode(reqstedId, stopRecursiveCall);
         if (stopRecursiveCall)
             break;
    }
}

最佳答案

不需要奶昔

public class HierarchyNode
{
    private decimal UserId;
    private List<HierarchyNode> ChildNodes;

    public List<HierarchyNode> IdentifySubNodeOfRequestedNode(int reqstedId)
    {
        if (this.UserId == reqstedId)
        {
            return this.ChildNodes;
        }

        return this.ChildNodes.
            Select(childNode => childNode.IdentifySubNodeOfRequestedNode(reqstedId)).
            FirstOrDefault(children => children != null);
    }
}

09-10 21:48