我有以下类型:
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 标题:Computers Id:20 ParentId:5标题:膝上型电脑
即being =‘being 3’>销售being=‘being 3’>电脑being=‘being 3’>‘的等级.
这个等级可能只包括一个类别或它可能在某些情况下有5+的孩子。
发布于 2015-04-16 15:51:45
使用LINQ,您可以简单地实现如下所示:
var LeafNodes = YourItemsList.Where(x => !YourItemsList.Any(y => y.ParentID == x.Id));现在您可以迭代此可枚举项,对于每个项,您可以遍历父节点以获得完整的链。
发布于 2015-04-16 15:54:47
通过创建以父Id作为键的查找,您可以轻松地找到给定节点的所有子节点,从而可以轻松地找到没有任何子节点的所有节点。
var lookup = categories.ToLookup(category => category.ParentId);
var leaves = categories.Where(category => !lookup[category.Id].Any());https://stackoverflow.com/questions/29679769
复制相似问题