gpt4 book ai didi

c# - 从 C# 中的对象列表创建树结构

转载 作者:太空宇宙 更新时间:2023-11-03 23:18:31 26 4
gpt4 key购买 nike

我有一个名为 Detail 的类,如下所示:

public class Detail
{
public int Id { get; set; }
public string Name { get; set; }
public System.Nullable<int> ParentID { get; set; }
}

然后我列出了详细信息如下:

        List<Detail> Details= new List<Detail>();

Details.Add(new Detail { Id = 1, Name = "James", ParentID =null });
Details.Add(new Detail { Id = 2, Name = "David", ParentID = 1 });
Details.Add(new Detail { Id = 3, Name = "Richard", ParentID = 2 });
Details.Add(new Detail { Id = 4, Name = "John", ParentID = 3 });
Details.Add(new Detail { Id = 5, Name = "Robert", ParentID = 3 });
Details.Add(new Detail { Id = 6, Name = "Paul", ParentID = 3 });
Details.Add(new Detail { Id = 7, Name = "Kevin", ParentID = 2 });
Details.Add(new Detail { Id = 8, Name = "Jason", ParentID = 7 });
Details.Add(new Detail { Id = 9, Name = "Mark", ParentID = 7 });
Details.Add(new Detail { Id = 10, Name = "Thomas", ParentID = 9 });
Details.Add(new Detail { Id = 11, Name = "Donald", ParentID = 9 });

现在我要将此详细信息列表转换为树结构。

最佳答案

你可以试试下面的方法

添加一个新类来保存树对象

public class TreeNode
{
public int Id { get; set; }
public string Name { get; set; }

public TreeNode Parent { get; set; }
public List<TreeNode> Children{ get; set; }
}

然后添加一个递归的方法来构建树

private static List<TreeNode> FillRecursive(List<Detail> flatObjects, int? parentId=null)
{
return flatObjects.Where(x => x.ParentID.Equals(parentId)).Select(item => new TreeNode
{
Name = item.Name,
Id = item.Id,
Children = FillRecursive(flatObjects, item.Id)
}).ToList();
}

然后在需要的地方调用它

 var tree = FillRecursive(Details,null);

关于c# - 从 C# 中的对象列表创建树结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36350370/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com