c# list<abc> abc包含id,name,parentid,child 的树形结构 写一个方法参数是树形list和要查找的id,返回对应id节点得所有上级
时间: 2024-09-28 12:03:25 浏览: 54
在C#中,如果你有一个`List<T>`类型的集合,其中T是一个表示树形结构的对象,比如`class Node { public int Id { get; set; } public string Name { get; set; } public int ParentId { get; set; } public List<Node> Children { get; set; }}`,你可以创建一个递归函数来查找给定ID的所有上级节点。下面是一个示例方法:
```csharp
public static List<Node> FindAllAncestors(List<Node> nodeList, int targetId)
{
List<Node> ancestors = new List<Node>();
foreach (Node node in nodeList)
{
if (node.Id == targetId) // 找到目标节点
{
// 将自身添加到祖先列表
ancestors.Add(node);
// 如果节点有父节点,则递归查找其父节点的上级
if (!ancestors.Contains(node.Parent))
{
ancestors.AddRange(FindAllAncestors(node.NodeList, node.ParentId));
}
}
}
return ancestors;
}
```
这个方法通过遍历节点列表,如果找到匹配的ID,就将当前节点添加到祖先列表中,并继续搜索其父节点,直到找不到更高级别的父节点为止。
阅读全文