麻烦帮我看看这个递归为什么只取了第一层的数据。!
public List<Menus> GetTreeMenusList(int parentid)
{
List<Menus> newlist = new List<Menus>();
using (SiteDataContext db = DBProvider.GetContext())
{
List<Menus> tmplist = (from c in db.Menus where c.parentid==parentid select c).ToList();
if (tmplist.Count > 0)
{
foreach (Menus i in tmplist)
{
newlist.Add(i);
GetTreeMenusList(i.id);
}
}
}
return newlist;
}
------解决方案--------------------
1、newList是一个局部变量,它在每次递归的时候被创建,并且也不在递归中传递,所以,你只能获得第一层菜单。应该把newList作为一个参数传进来。
2、即使把newList作为参数在每一次递归时传递,菜单没法体现其层次性,因为所有菜单内容都被加到了同一个列表中。要解决这个问题,可以在Menus类型上增加一个存放下级菜单的属性,例如SubMenus,然后在递归的时候往这里面加数据。