我在第二个查找列表的帮助下编辑分层列表中的字段/属性时遇到问题。我尝试的一切看起来都很乱,很难维护。二元搜索树是我的朋友吗?我该如何应用它们?展平我的层次结构并不起作用,因为我需要层次结构,只是过滤了。
public class Filter
{
public string Name {get;set;}
public bool IsActive {get;set;}
public bool IsDisplayed {get;set;}
public string List<Filter> Filters {get;set}
}
public List<string> ActiveFilters {"Green", "LighterYellow", "Red", "Meep")};
我的基本过滤器基本上如下所示:
现在我尝试将其中一些过滤器设置为活动。但当然,ActiveFilters
中的孩子的父母需要显示(IsDisplayed
),否则您将无法看到子项目。
最后,我希望层次结构看起来像这样(基于应用ActiveFilters
,粗体表示IsActive
,斜体 {{ 1}}):
我一直试图以递归方式循环遍历分层列表,但我不知道如何将父母设置为IsDisplayed
(因为我必须&#34;回到&#34; )。循环通过IsDisplayed
的另一种方式时,我不想在每个活动过滤器性能上迭代整个过滤器列表。
答案 0 :(得分:0)
我会做这样的事情:
首先,将Parent
属性添加到Filter
public class Filter
{
public string Name {get;set;}
public bool IsActive {get;set;}
public bool IsDisplayed {get;set;}
public string List<Filter> Filters {get;set}
// Parent
public Filter Parent {get;set;}
}
在层次结构的初始化代码中,确保正确填充Parent。 (我不知道你的代码是什么样的,所以我会把那部分留给你。)
接下来,在突出显示活动过滤器的代码中,执行以下操作:
var parent = activeFilter.Parent;
while (parent != null)
{
parent.IsDisplayed = true;
parent = parent.Parent;
}