我有一个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);
}
}