1
/// Model
public class MenuModels
{
public Int32 MenuId { get; set; }
public string MenuName { get; set; }
public Int32 MenuLevel { get; set; }
public Int32 MenuParent { get; set; }
public string MenuUrl { get; set; }
}
/// In my Controller I have this code
Menus = menuRepository.GetAll().OrderBy(y=>y.menu_id+y.menu_parent+y.menu_level).ToList()
我想按3个字段(id,parentId,level)的总和升序排列所有菜单。OrderBy的Lambda表达式
或2场的其他级联(ID,parentId的)
menuRepository.GetAll().OrderBy(y=>int.parse(y.menu_id.ToString+y.menu_parent.ToString)).ToList()
基本上即时创建菜单在创建控制器我有填充所有菜单一个下拉列表,但我想,以填补在下拉菜单下面
var menuModel = new MenuModels()
{
Menus = menuRepository.GetAll().ToList().Select(x =>
{
var level = x.menu_level;
return (level == 0)
? new SelectListItem {Text = x.menu_name, Value = x.menu_id.ToString()}
: new SelectListItem {Text = "-- "+x.menu_name, Value = x.menu_id.ToString()};
})
};
return View(menuModel);
但THI像
Home
--submenu1
--submenu2
Contact
--submenu1
--submenu2
为了这个,我已经写代码s不给我什么即时通讯期待,我知道为什么, 在数据库中,我有表像
id level parent name
---------------------------
1 0 0 Home
2 0 0 About
3 1 1 submenu1
4 1 1 submenu2
5 1 2 submenu1
我做SQL查询此,以获得更好的理解我的问题
select *,(Convert(nvarchar(50),(case when menu_parent=0 then menu_id else menu_parent end)) + '' + Convert(nvarchar (50),(menu_parent)))
as Sort from menu order by Sort,menu_id
此查询结果像
id level parent name Sort
------------------------------------
1 0 0 Home 10
3 1 1 submenu1 11
4 1 1 submenu2 11
2 0 0 Abount 20
5 1 2 submenu1 22
看到doin'这个,首先它将按menu_id然后menu_parent等进行排序,我不想要这个,我想菜单排序像第一个父母,然后它的孩子.. – FosterZ 2012-04-20 09:47:04
你试着运行代码?我希望这应该工作 – 2012-04-20 09:59:39
我想你没有得到我的问题,即时通讯有一个菜单表,其中包含所有的父母和孩子的菜单,现在当在下拉菜单中显示所有这些菜单,我想显示像父母,然后所有的孩子父母,然后所有的孩子..我编辑我的问题 – FosterZ 2012-04-20 10:19:07