c# - Razorpage 上 LINQ 中的 clausole 不起作用的地方
问题描述
我正在开发一个 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”包含所有树形菜单项。
解决方案
改写如下:
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
。但是您的收藏(在第一次过滤后)还没有这样的项目。
推荐阅读
- python - 如何在函数 python 测试中模拟函数?
- java - 如何获取集合>文档>集合>文档中的firestore数据库中的字段?
- google-apps-script - 如何使用 Google Apps 脚本对长度不同的列求和?
- android - JetPack Compose - 定义“复杂”布局的最佳实践
- excel - Google App Script - 以表格/Excel 附件的形式自动通过电子邮件发送 Google 表格
- r - 使用数据框中另一列的时间戳检查特定时间跨度的列中的值
- node.js - 在 DigitalOcean 部署 MERN 堆栈时,错误 TextEncoder 未定义
- node.js - puppeteer.use(....) 不是 Puppeteer 中的函数错误 - Nodejs
- python-3.x - Firestore 数据库,查询集合并检查 Python 中是否存在文档
- cypress - 无法使用 cy.get('html')