我有一个嵌套菜单-这里是一个简化的类:
#bottom-header-section {
background-image: url('website/wertesystem/wp-content/uploads/2018/10/title-new.png');
float:left;
height: 120px;
width: 800px;
margin: inherit;
background-position: right bottom;
background-repeat: no-repeat;
}
鉴于我有一个public class NestedNode
{
public string Url { get; set; }
public List<NestedNode> Children { get; set; }
}
的递归列表,我试图确定在任何级别上是否有任何后代处于活动状态。
这是要测试的代码:
NestedNode
我需要做的是弄清楚是否有任何父母子女活跃(在最顶层),以便我可以添加课程。目前,我的想法只深入了一个层次。
答案 0 :(得分:1)
类似的东西
void Main()
{
var nodes = new List<NestedNode>();
var isActive = nodes.Any(n => n.AnyActive("url"));
}
public class NestedNode
{
public NestedNode()
{
Children = Enumerable.Empty<NestedNode>();
}
public string Url { get; set; }
public IEnumerable<NestedNode> Children { get; set; }
public bool AnyActive(string url){ return Url==url || Children.Any(c => c.AnyActive(url));}
}
答案 1 :(得分:0)
在这种情况下,我可能会向NestedNode
添加一个方法来递归检查条件-像这样:
public bool ExistsRecursive(Func<NestedNode, bool> predicate)
{
if(predicate(this))
{
return true;
}
foreach(var node in Children)
{
return predicate(node);
}
return false;
}
然后,在您的Page_Load
中,您所需要做的就是这个:
if(nodes.ExistsRecursive(n => n.Url == currentUrl))
{
// current url is found in at least one node
}