我正在开发Razor WebApp,当我使用此LINQ代码时,它无法正常使用。 这是我的剃刀代码:
var menuItems = menus.GetMenuMaster(@UserRoles).Result.Where(n => n.Parent_MenuID == "*");
@foreach (var menuNames in menuItems)
{
var submenus = menuItems.Where(n => n.Parent_MenuID == menuNames.MenuID))
}
数据库包含以下数据:
ID | MenuID | MENUNAME | Parent_MenuID
---------------------------------------------------
1 | HOME | HOME | *
2 | MOVIES | MOVIES | *
3 | ACTORS | ACTORS | MOVIES
问题在于HOME菜单的“子菜单”为空,但必须具有ACTORS子菜单; “ menuItems”包含所有树菜单项。
答案 0 :(得分:1)
像这样重写:
var allmenus = menus.GetMenuMaster(@UserRoles).Result;
var menuItems = allmenus.Where(n => n.Parent_MenuID == "*");
@foreach (var menuNames in menuItems)
{
var submenus = allmenus.Where(n => n.Parent_MenuID == menuNames.MenuID))
}
已更新:
在代码中,您按条件n.Parent_MenuID == "*"
过滤了菜单,然后在循环中尝试按条件n.Parent_MenuID == menuNames.MenuID
查找过滤后的集合中的项目。但是您的收藏集(首次过滤后)还没有此类项目。