我有以下课程
class Menu
{
public int Id {get;set;}
public String Title {get;set;}
public List<MenuItems> MenuItems {get;set;}
}
class MenuItems
{
public int id {get;set;}
public String Title {get;set;}
public String Address {get;set;}
}
此应用程序在数据库中存储了一整套Menus
和MenuItems
。然后将这些菜单项分配给特定用户。这个想法是,在UserLogin上,应该根据分配的MenuItem动态生成菜单栏。
我想将LINQ查询的结果存储在名为UserMenuBar
class UserMenuBar
{
public int MenuId{get;set;}
public String MenuTitle {get;set;}
public List<MenuItems>{get;set;} // Related MenuItems..
}
这是我的LINQ查询,
IEnumerable<UserMenuBar> m= from mnubar in p.Menus
join mitems in p.MenuItems
on mnubar.MenuItemId equals mitems.id
where mnubar.UserId == UName.UserId
select new Models.types.UserMenuBar
{
HeadId=mitems.MenuHeadId,
HeadTitle=mitems.MenuHead.MenuTitle
}
如何将MenuItem存储在List中。
非常感谢任何帮助..
答案 0 :(得分:1)
如果我正确理解了您的问题,那么您有2个表,Menu
和MenuItems
,它们连在一起。 Menu
可以包含多个MenuItems
,并且您希望根据用户凭据显示此MenuBar
。
我建议使用以下数据结构
class Menu
{
public int Id{get; set;}
public String Title{get; set;}
public List<MenuItems> MenuItems{get; set;}
public int UserId {get; set;}
}
class MenuItem
{
public int MenuId{get; set;} // Link to the parent Menu Id
public int Id{get; set;}
public int Title{get; set;}
public string Address{get; set;}
}
您可以有2个查询来完成任务。
IEnumerable<UserMenuBar> userMenuBar = from users in Users join
menus in Menus on users.Id
equals menus.UserId
select
{
MenuId = menus.Id,
MenuTitle = menus.Title
};
现在根据菜单填充MenuItems。
userMenuBar.ForEach(
v => {
v.MenuItems = (from menuItems in MenuItem
where menuItems.MenuId = v.MenuId
select menuItems).ToList();
}
);
希望它有所帮助!!!