c# - 获取自引用层次树中的最后一个 child

标签 c# relationship hierarchy hierarchical-data

我有以下类型:

public class Category
{
    public string Id { get; set; }
    public string ParentId { get; set; }
    public string Title { get; set; }
}

顶级类别的 ParentId 值为 0。任何子类别都通过 ParentId 属性与其各自的父类别相关。

我正在尝试实现一种很好的方法来确定哪个是树中的最后一个子节点(无论该树有多深),因此在下面的示例中,我希望返回“笔记本电脑”条目(或其至少 ID):

Id: 10 ParentId: 0 Title: For Sale

Id: 5 ParentId: 10 Title: Computers

Id: 20 ParentId: 5 Title: Laptops

即层次结构为“待售”>“计算机”>“笔记本电脑”。

此层次结构可能仅包含 1 个类别,或者在某些情况下可能有 5 个以上的子类别。

最佳答案

使用 LINQ,您可以像这样简单地实现这一点:

var LeafNodes = YourItemsList.Where(x => !YourItemsList.Any(y => y.ParentID == x.Id));

现在您可以迭代这个可枚举对象,并且对于每个项目,您可以向上遍历父节点以获得完整的链。

关于c# - 获取自引用层次树中的最后一个 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29679769/

相关文章:

c# - c# 中的运动检测和对象提取?

c# - 将颜色绑定(bind)到单例

dynamics-crm-2011 - Dynamics CRM - 获取关系名称

sql - 为什么 Oracle connect by with nocycle 遵循 root 循环

linux - 从脚本调用时,Bash find 无法返回所有匹配的文件

c# - 在桌面应用程序上使用 .NET Core

c# Visual Studio 似乎遵循了错误的代码路径

database-design - 菱形关系——认同还是非认同?

java - JHipster:错误:Image和ImageType的关系中,ImageType没有声明

android - 什么是 Root View ?