首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用parentID和ordermenu订购

如何使用parentID和ordermenu订购
EN

Stack Overflow用户
提问于 2013-03-16 18:27:31
回答 2查看 124关注 0票数 0

我有一张菜单,它的特点如下:

tblMenu: ID,标题,ParentID,OrderM

我希望按以下方式选择ParentID和OrderM的菜单和订单:

例:

表中的数据:

代码语言:javascript
复制
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获得以下结果:

代码语言:javascript
复制
menu1
submenu1-1
submenu1-2
menu2
submenu2-1
submenu2-2
menu3
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-16 19:07:44

这应该有效(示例):

代码语言:javascript
复制
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));
票数 2
EN

Stack Overflow用户

发布于 2013-03-16 18:49:17

如果排序有问题,请尝试使用OrderBy和ThenBy来实现所需的顺序。

例如:

代码语言:javascript
复制
 var items = source.OrderBy(i => i.OrderM).ThenBy(o => o.ParentID);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15452997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档