我的应用程序中有一个树状结构。它不是真正的树数据结构,这是我的问题的一部分。相反,它是List<Child>
,其中每个Child
都有ParentID
。 Child
结构如下所示:
public class Child
{
public int ID { get; set; }
public int BranchID { get; set; }
public int? ParentID { get; set; }
}
我有一些情况,我有一个“破碎”的树。换句话说,ParentID与List<Child>
中的任何项目都不匹配。如果ParentID为null,我知道Child是树分支的根项。但是,如果ParentID有一个值,并且与List&lt;&gt;中的任何子ID都不匹配,那么我需要将其从List<Child>
中删除。目前,我正在尝试以下方法:
List<Child> children = GetTree();
foreach (Child child in children)
{
if (child.ParentID.HasValue == false)
RemoveBranch(child);
}
void RemoveBranch(Child child)
{
foreach (Child child in children)
{
if (child.ParentID.HasValue)
{
if (child.ParentID.Value == child.ID)
RemoveBranch(child);
children.Remove(child);
}
}
}
出于某种原因,这不起作用。我无法弄清楚原因。