Razorpage 上的 LINQ 中的 clausole 不起作用的地方
Where clausole in LINQ on Razorpage don't work
我正在开发 Razor WebApp,当我使用此 LINQ 代码时,它无法按方面运行。
这是我的 Razor 代码:
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
问题是"submenus"HOME菜单是空的,但是必须有ACTORS子菜单; "menuItems" 包含所有树菜单项。
重写为:
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
在过滤的 collection 中查找项目。但是你的collection(第一次过滤后)还没有这样的项目。
我正在开发 Razor WebApp,当我使用此 LINQ 代码时,它无法按方面运行。 这是我的 Razor 代码:
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
问题是"submenus"HOME菜单是空的,但是必须有ACTORS子菜单; "menuItems" 包含所有树菜单项。
重写为:
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
在过滤的 collection 中查找项目。但是你的collection(第一次过滤后)还没有这样的项目。