我想找到分层树的最后一项。
class Node
{
public int Id { get; set; }
public int ParentId { get; set; }
public string Name { get; set; }
}
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查询?
答案 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));