我有一张菜单,它的特点如下:
tblMenu: ID,标题,ParentID,OrderM
我希望按以下方式选择ParentID和OrderM的菜单和订单:
例:
表中的数据:
ID = 1 Title = menu1 ParentID = 0 OrderM = 1
ID = 2 Title = menu2 ParentID = 0 OrderM = 2
ID = 3 Title = menu3 ParentID = 0 OrderM = 3
ID = 4 Title = submenu2-1 ParentID = 2 OrderM = 1
ID = 5 Title = submenu2-2 ParentID = 2 OrderM = 2
ID = 6 Title = submenu1-2 ParentID = 1 OrderM = 2
ID = 7 Title = submenu1-1 ParentID = 1 OrderM = 1我希望通过选择LINQ获得以下结果:
menu1
submenu1-1
submenu1-2
menu2
submenu2-1
submenu2-2
menu3发布于 2013-03-16 19:07:44
这应该有效(示例):
var result =
l.Where(c => c.ParentID == 0)
.Select(c => new {Menu = c, Sub = l.Where(ci => ci.ParentID == c.ID).OrderBy(s => s.OrderM)})
.OrderBy(ao => ao.Menu.OrderM)
.SelectMany(ao => ao.Sub.Count() == 0 ? new List<C> {ao.Menu} : new List<C> {ao.Menu}.Concat(ao.Sub));发布于 2013-03-16 18:49:17
如果排序有问题,请尝试使用OrderBy和ThenBy来实现所需的顺序。
例如:
var items = source.OrderBy(i => i.OrderM).ThenBy(o => o.ParentID);https://stackoverflow.com/questions/15452997
复制相似问题