表格数据:
Id_Org_hierarchy | 层次结构_名称 | Parent_Id_Org_hierarchy |
---|---|---|
1 | OGt | 0 |
2 | NHT | 1 |
3 | 第 1 批 | 2 |
3 | 语音 | 1 |
我需要如下结果:
第一批(NHT,OGT)
详情: Id_Org_hierarchy 列值存在于 Parent_Id_Org_hierarchy 等中
它是一个树结构格式数据。 任何人都可以帮助我,我不知道如何实现结果。
期待这个结果Batch1(NHT,OGT)
有一个表示表行的类结构,解决方案将涉及递归方法来遍历树并构建结果。
这是一个基本解决方案:
定义您的班级:
public class OrgHierarchy
{
public int Id_Org_hierarchy { get; set; }
public string Hierarchy_Name { get; set; }
public int Parent_Id_Org_hierarchy { get; set; }
}
使用 LINQ 和递归:
public string GetHierarchyPath(List<OrgHierarchy> data, int id)
{
var item = data.FirstOrDefault(x => x.Id_Org_hierarchy == id);
if (item == null) return string.Empty;
if (item.Parent_Id_Org_hierarchy == 0) return item.Hierarchy_Name;
return item.Hierarchy_Name + "," + GetHierarchyPath(data, item.Parent_Id_Org_hierarchy);
}
public void RunExample()
{
List<OrgHierarchy> list = new List<OrgHierarchy>
{
new OrgHierarchy { Id_Org_hierarchy = 1, Hierarchy_Name = "OGt", Parent_Id_Org_hierarchy = 0 },
new OrgHierarchy { Id_Org_hierarchy = 2, Hierarchy_Name = "NHT", Parent_Id_Org_hierarchy = 1 },
new OrgHierarchy { Id_Org_hierarchy = 3, Hierarchy_Name = "BATCH 1", Parent_Id_Org_hierarchy = 2 },
new OrgHierarchy { Id_Org_hierarchy = 4, Hierarchy_Name = "Voice", Parent_Id_Org_hierarchy = 1 }
};
var item = list.FirstOrDefault(x => x.Id_Org_hierarchy == 3); // assuming we're starting from id 3
if (item != null)
{
var path = GetHierarchyPath(list, item.Parent_Id_Org_hierarchy);
var result = $"{item.Hierarchy_Name}({path.TrimEnd(',')})";
Console.WriteLine(result); // Outputs: BATCH 1(NHT,OGt)
}
}
运行 RunExample() 方法查看结果。