以下是C#(。cs)
的示例代码private List<Menu> GetMenuTree(List<Menu> list, int? idparent)
{
return list.Where(x => x.IDParent == idparent).Select(x => new Menu()
{
ID = x.ID,
IDParent = x.IDParent,
text = x.text,
List = GetMenuTree(list, x.ID)
}).ToList();
}
在节点的大多数孩子中,它给了我(&gt;),因为List是空的。
结果是JSON
{"ID":1,"IDParent":null,"text":"Furniture",
"List":
[{"ID":2,"IDParent":1,"text":"Table","List":[]},
{"ID":3,"IDParent":1,"text":"Chairs","List":[]}]
}
List []为空。 如果它在节点的最多子节点中如何删除它?
答案 0 :(得分:1)
我会添加另一个确定是否有孩子的函数:
private List<Menu> GetMenuTree(List<Menu> list, int? idparent)
{
return list.Where(x => x.IDParent == idparent).Select(x => new Menu()
{
ID = x.ID,
IDParent = x.IDParent,
text= x.text,
List = HasChildren(list, x.ID) ? GetMenuTree(list, x.ID) : null
}).ToList();
}
public bool HasChildren(List<Menu> list, int? idparent)
{
return list.Where(x => x.IDParent == idparent).FirstOrDefault() != null;
}
或者你可以在GetMenuTree
函数中“内联”,但我认为这种可读性更好。