请教一个linq生成树形类结构的问题 http://topic.csdn.net/u/20120628/17/cedc4661-39b6-42c9-9ba1-a1d8e3244142.html 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 比如讲故事:从前有座山,山上有座庙,庙前有个卖油翁,卖油翁对人说:从前有座山,山上有座庙,庙前有个卖油翁,卖油翁对人说:从前有座山,山上有座庙,庙前有个卖油翁,卖油翁对人说:用循环:for(int a=0;a<100;a++){讲故事朗读:从前有座山,山上有座庙,庙前有个卖油翁,卖油翁对人说:}用递归:讲故事(从前有座山,山上有座庙,庙前有个卖油翁,卖油翁对人说:);private void 讲故事(string 故事内容){ if(关键在设置终止条件,否则,循环不断。)return; 讲故事朗读:故事内容 讲故事(故事内容);} 哎,现在问题还没解决我现在用的递归代码 LinqDBOperation dbo = new LinqDBOperation(); List<ModelMenuView> root = new List<ModelMenuView>(); List<ModelMenuView> menuList = dbo.GetDatas<ModelMenuView>().ToList(); Func<ModelMenuView, List<ModelMenuView>, ModelMenuView> func = (mmv, list) => { return null; }; func = (mmv, list) => { if (list.Count(x => x.pId == mmv.id) > 0) { list .Where(x => x.pId == mmv.id) .ToList() .ForEach(y => { mmv.nodes = new List<ModelMenuView>(); mmv.nodes.Add(func(y, list)); }); } return mmv; }; root.Add(func(menuList.FirstOrDefault(x=>x.pId== "0"), menuList)); menuList.Add(new ModelMenuView() { id = "1", name = "test1", pId = "0" }); menuList.Add(new ModelMenuView() { id = "2", name = "test2", pId = "1" }); menuList.Add(new ModelMenuView() { id = "3", name = "test3", pId = "1" }); menuList.Add(new ModelMenuView() { id = "4", name = "test4", pId = "2" }); menuList.Add(new ModelMenuView() { id = "5", name = "test5", pId = "3" }); menuList.Add(new ModelMenuView() { id = "6", name = "test6", pId = "4" }); menuList.Add(new ModelMenuView() { id = "7", name = "test7", pId = "5" }); menuList.Add(new ModelMenuView() { id = "8", name = "test8", pId = "6" }); menuList.Add(new ModelMenuView() { id = "9", name = "test9", pId = "7" }); menuList.Add(new ModelMenuView() { id = "10", name = "test10", pId = "8" }); menuList.Add(new ModelMenuView() { id = "11", name = "test11", pId = "9" }); menuList.Add(new ModelMenuView() { id = "12", name = "test12", pId = "10" });菜单数据没有递归出我想要的数据呢。请问各位大哥该如何修改啊? public class ModelMenuView { public string id { get; set; } public string name { get; set; } public string pId { get; set; } private List<ModelMenuView> _children = new List<ModelMenuView>(); public List<ModelMenuView> nodes { get { return _children; } set { _children = value; } } } 你看看linq产生的sql语句放到数据库里查询的数据对不对呗 关闭窗口代码 如何判断鼠标的旋转方向问题.是顺时针还是逆时针转 请问c#中有没有取主机名和密码的函数啊 高手进!数据库保存图片的问题。 关于MDI子窗体,加急求救,在线关注!谢了 我的web窗体里面怎么没有timer? 分不多了,跪求!循环插入记录 用C#操作Word的问题??? 解决winform卡死的问题 C# 串口 SerialPort读取串口数据回显到文本框(显示不出来?) winform更新数据源问题 dataSet 中记录的问题
{
if(关键在设置终止条件,否则,循环不断。)return;
讲故事朗读:故事内容
讲故事(故事内容);
}
LinqDBOperation dbo = new LinqDBOperation();
List<ModelMenuView> root = new List<ModelMenuView>();
List<ModelMenuView> menuList = dbo.GetDatas<ModelMenuView>().ToList();
Func<ModelMenuView, List<ModelMenuView>, ModelMenuView> func = (mmv, list) => { return null; }; func = (mmv, list) =>
{
if (list.Count(x => x.pId == mmv.id) > 0)
{
list
.Where(x => x.pId == mmv.id)
.ToList()
.ForEach(y =>
{
mmv.nodes = new List<ModelMenuView>();
mmv.nodes.Add(func(y, list));
});
} return mmv;
}; root.Add(func(menuList.FirstOrDefault(x=>x.pId== "0"), menuList));
menuList.Add(new ModelMenuView() { id = "1", name = "test1", pId = "0" });
menuList.Add(new ModelMenuView() { id = "2", name = "test2", pId = "1" });
menuList.Add(new ModelMenuView() { id = "3", name = "test3", pId = "1" });
menuList.Add(new ModelMenuView() { id = "4", name = "test4", pId = "2" });
menuList.Add(new ModelMenuView() { id = "5", name = "test5", pId = "3" });
menuList.Add(new ModelMenuView() { id = "6", name = "test6", pId = "4" });
menuList.Add(new ModelMenuView() { id = "7", name = "test7", pId = "5" });
menuList.Add(new ModelMenuView() { id = "8", name = "test8", pId = "6" });
menuList.Add(new ModelMenuView() { id = "9", name = "test9", pId = "7" });
menuList.Add(new ModelMenuView() { id = "10", name = "test10", pId = "8" });
menuList.Add(new ModelMenuView() { id = "11", name = "test11", pId = "9" });
menuList.Add(new ModelMenuView() { id = "12", name = "test12", pId = "10" });菜单数据没有递归出我想要的数据呢。请问各位大哥该如何修改啊?
public class ModelMenuView
{
public string id { get; set; }
public string name { get; set; }
public string pId { get; set; } private List<ModelMenuView> _children = new List<ModelMenuView>();
public List<ModelMenuView> nodes
{
get { return _children; }
set { _children = value; }
}
}