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(第一次过滤后)还没有这样的项目。