菜单中,三个表之间有以下关系:
user_role = > roleid = > rolemenu
rolemenu = = >菜单> menuid
他们之间的业务关系是:
当
用户通过
用户名登陆,得到了user_role列表,以及用户的角色了
通过user_role找到相应的菜单
有一个问题,是一个用户可以有多个角色,一个角色有多个菜单,当然,有一个菜单项,可以在这两个不同的角色,有一个问题,用户在
管理员角色的
文件菜单,并在新闻管理员文件菜单中的这个角色,所以会有两回完全相同的文件菜单,下面,我用匿名和不同的
方法来
解决这个问题,代码如下:
复制代码代码如下所示:
类节目
{
static void main(String { } args)
{
#
区域实体表的初始化
新的清单列表userrole =
{
新的user_role(01
新的user_role(01
新的user_role(02
};
rolemenu =新的列表清单
{
新的role_menu(2,3),
新的role_menu(1,1),
New Role_Menu (1,2),
新的role_menu(2,1),
新的role_menu(2,2),
};
列表菜单=新列表
{
新菜单(1,
编辑器
新菜单(2,文件
新菜单(3,视图
新菜单(4,
系统 };
#铁心端部定点
VaR在LINQ =从1 userrole
在加入数据rolemenu在data1.roleid等于data2.roleid
在菜单上加入数据data2.menuid等于data3.menuid
在data1.userid.equals(01 )
选择新的
{
data1.userid UserID =,
menuid = data2.menuid,
菜单=数据,
};
(LINQ。不同)。OrderBy(我= i.menu。OrderNumber)(。列出)
foreach(我= >。console.writeline(用户ID:{ 0 },我{ 1 }菜单,菜单名称:{ 2 }
i.userid,i.menuid,i.menu定义));
Console.ReadKey();
}
}
#区域实体对象
类user_role
{
公共字符串标识符{有};集;
public int roleid {有};集;
公共user_role(字符串标识符,int roleid)
{
this.roleid = roleid;
this.userid =用户名;
}
}
菜单类
{
public int menuid {有};集;
公共字符串定义{有};集;
public int OrderNumber {得到;集;}
公共菜单(int menuid,字符串定义,int OrderNumber)
{
this.menuid = menuid;
this.menuname =定义;
this.ordernumber =数量;
}
}
类role_menu
{
public int roleid {有};集;
public int menuid {有};集;
公共role_menu(int,int roleid,menuid)
{
this.roleid = roleid;
this.menuid = menuid;
}
}
#铁心端部定点
结果就是我想看到的: