我为分层数据创建了一个类。从这个类我生成自定义树视图。在将数据发送到treeview之前,我需要删除一个不以HaveData = true
为实例的分支 public class Data
{
public List<Data> Children
{
get;
set;
}
public bool HaveData
{
get;
set;
}
}
之前的Treeview:
1 First
1.1 Item
1.1.1 Item (HaveData = false)
1.2 Item
1.2.1 Item (HaveData = true)
...
我需要:
1 First
1.2 Item
1.2.1 Item (HaveData = true)
...
如何浏览所有节点并仅删除那些以HaveData = false结尾的节点? 谢谢。
答案 0 :(得分:1)
这是一种递归方式:
public void DeleteBranchWithNoData()
{
var toBeRemoved = new List<Data>();
foreach(var child in Children)
{
if(!child.HaveData && (child.Children == null || !child.Children.Any()))
{
toBeRemoved.Add(child);
}
else
{
child.DeleteBranchWithNoData();
}
}
Children.RemoveAll(d => toBeRemoved.Contains(d));
}
从要删除的分支的顶部节点调用此方法。
答案 1 :(得分:-3)
如果元素有数据或其任何子元素都有数据,则Make HaveData为true。
删除树中HaveData为false的所有节点。
???
利润。