我有一个 C# 类,其中包含与其属性之一相同的类的列表:
class MyClass
{
string id;
List<MyClass> children;
//other properties
public MyClass(string Id, List<MyClass> Children)
{
id = Id;
children = Children;
}
}
在我的程序中,此类用于创建树结构(因此,某些项目不会有子项目)。有没有办法在结构中找到一个 ID,然后从那里向下递归树以获得父节点数组?
我知道这类似于 TreeView.FindNode() 但我想尽可能避免使用派生类。
最佳答案
我会用递归来做:
List<MyClass> GetPathToId(string id2find)
{
if (Id == id2find) return new List<MyClass>(new[] { this });
if (Children == null) return null;
List<MyClass> result = Children.Select(e => e.GetPathToId(id2find)).FirstOrDefault(r => r != null);
if (result != null) result.Insert(0, this);
return result;
}
更新:正如医生正确指出的那样,由于我不知道你的类(class),Children
可能为空。我添加了空检查。
关于c# - 在树结构中通过 ID 属性定位实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34359747/