如何查找分层树最后一个节点c#

时间:2016-11-02 07:45:24

标签: c# linq

我想找到分层树的最后一项。

class Node
{
    public int Id { get; set; }
    public int ParentId { get; set; }
    public string Name { get; set; }
}

enter image description here

    var list = new List<Node> {
        new Node {Id = 1, ParentId = 0, Name = "N 1"},
        new Node {Id = 2, ParentId = 1, Name = "N 1.1"},
        new Node {Id = 3, ParentId = 1, Name = "N 1.2"},
        new Node {Id = 4, ParentId = 2, Name = "N 1.1.1"},
        new Node {Id = 5, ParentId = 2, Name = "N 1.1.2"},
        new Node {Id = 6, ParentId = 2, Name = "N 1.1.3"}
    };

是否可以使用c#或linq查询?

2 个答案:

答案 0 :(得分:2)

最后一个节点是父节点不是其他节点的节点。

使用此查询:

var q = list.Where(x => list.All(y => y.ParentId != x.Id));

答案 1 :(得分:0)

这就是你想要的

var hasChild = list.Select(n => n.ParentId); 
var lastNodes = list.Where(n => !hasChild.Contain(n.Id));