Razorpage上的LINQ中的clausole不起作用

时间:2019-10-10 13:45:22

标签: c# linq razor-pages

我正在开发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”包含所有树菜单项。

1 个答案:

答案 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查找过滤后的集合中的项目。但是您的收藏集(首次过滤后)还没有此类项目。