遍历转树结构
{
var list = new List<Foo>{
new Foo("111",1),
new Foo("112",2),
new Foo("113",2),
new Foo("114",2),
new Foo("115",3),
new Foo("116",1),
new Foo("117",1),
new Foo("118",2),
new Foo("119",3),
new Foo("120",4),
};
var result = new List<Far>();
foreach (var item in list)
{
if (result.Count == 0)
{
result.Add(new Far(item.Id, item.Layer, null));
continue;
}
var temp = result.Last();
while (true)
{
if (temp == null)
{
result.Add(new Far(item.Id, item.Layer, temp));
break;
}
if (temp.Layer == item.Layer - 1)
{
temp.Children.Add(new Far(item.Id, item.Layer, temp));
break;
}
if (temp.Layer == item.Layer)
{
if (temp.Parent == null)
result.Add(new Far(item.Id, item.Layer, null));
else
temp.Parent.Children.Add(new Far(item.Id, item.Layer, null));
break;
}
temp = temp.Children.LastOrDefault();
}
}
Console.WriteLine("");
}
class Far
{
public string Id { get; set; }
public int Layer { get; set; }
public Far Parent { get; set; }
public List<Far> Children { get; set; }
public Far(string id, int layer, Far parent)
{
Id = id;
Layer = layer;
Parent = parent;
Children = new List<Far>();
}
}
class Foo
{
public string Id { get; set; }
public int Layer { get; set; }
public Foo(string id, int layer)
{
Id = id;
Layer = layer;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)