我有一个 HierarchyNode 类型的“高级对象”,它将具有相同类型 HierarchyNode 的子节点(每个子节点可能有它们的子节点)。
我应该从“高级对象”中读取请求的父节点的子节点。所以我的代码如下(调用者——superiorObject.IdentifySubNodeOfRequestedNode(...))。但是 stopRecursiveCall 在 foreach 循环中是 false eventthough 如果循环被执行并且也不是所有代码返回值异常。如何解决这个问题并返回子节点或者是否有其他更好的解决方案来解决这个问题?谢谢
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;
}
}
最佳答案
不需要 bool
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);
}
}
关于c# - 需要有关树状结构数据检索的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11207132/