我在C#中有一个具有以下结构的数据表。
id name parentid
1 a 0
2 b 1
3 c 1
4 d 3
5 e 3
6 f 2
7 g 2
现在我想创建一个数据表,如下所示
Parent child1 child2 child3 ....
a b f
a b g
a c d
a c e
任何建议??
答案 0 :(得分:1)
任何建议?
最后,可能会有一个聪明的Linq查询使用递归函数,但想想如何在逻辑上解决这个并在代码中写出来:
查找所有“根”项(没有有效父项的项)
var roots = dt.Where(r => dr["parentid"] == 0);
对于每个根项目,找到将该项目ID作为其父项目的所有项目
foreach(var root in roots)
var children = dt.Where(r => dr["parentid"] == root);
为每个孩子找到孩子的项目等等。
2和3最终可以成为一个简单的3-4行递归函数调用 - 查看递归函数如何工作,我相信你会弄清楚它。如果没有,请在卡住时回复。