Где не работает клаузола в LINQ на Razorpage - PullRequest
0 голосов
/ 10 октября 2019

Я разрабатываю 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

Проблема в том, что «подменю» пусто для меню HOME, но должно иметь подменю ACTORS;«menuItems» содержит все элементы меню дерева.

1 Ответ

1 голос
/ 10 октября 2019

Переписать как:

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,Но в вашей коллекции (после первой фильтрации) таких элементов уже нет.

...