给出一个共同的父/子表:
Table A
Column Id int
Column Parent_Id int
Column Description text
我想只获取没有任何子节点的节点。
1,null,"PARENT A"
2,null,"PARENT B",
3,null,"PARENT C",
100,1,"CHILD A1",
101,1,"CHILD A2",
102,2,"CHILD B1"
因此,对于我的结果集,我只想得到:
父C(因为它没有任何子元素),以及子A1,B2,B1。
答案 0 :(得分:1)
您没有说明您使用LINQ查询到底是什么,但一般的想法是
var leafNodes = nodes.Where(n => nodes.Count(n1 => n1.Parent_Id == n.Id) == 0);
答案 1 :(得分:1)
您可能希望使用Any()方法而不是Count()== 0.请参阅Which method performs better: .Any() vs .Count() > 0?
var itemsWithoutChildren = nodes.Where(item=>!nodes.Any(innerItem=>innerItem.Parent_Id==item.Id))