asp.net mvc在列表中包含列表的简单LINQ语句时遇到的问题
我一直在使用asp.net-core MVC 6制作一个动态菜单 我有一个menuItem对象,我希望根据两个条件选择对象的子集。以下是菜单对象:asp.net mvc在列表中包含列表的简单LINQ语句时遇到的问题,asp.net,asp.net-mvc,linq,Asp.net,Asp.net Mvc,Linq,我一直在使用asp.net-core MVC 6制作一个动态菜单 我有一个menuItem对象,我希望根据两个条件选择对象的子集。以下是菜单对象: public class MenuItem { public int Id { get; set; } public bool Divider { get; set; } public bool Header { get; set; } public string ActionName { get; set; }
public class MenuItem
{
public int Id { get; set; }
public bool Divider { get; set; }
public bool Header { get; set; }
public string ActionName { get; set; }
public string ControllerName { get; set; }
public string MenuItemText { get; set; }
public IList<string> Roles { get; set; }
public int ParentId { get; set; }
public MenuItem()
{
}
public MenuItem(int id, bool divider, bool header, string action, string controller, string menuItemText, IList<string> roles,int parentid)
{
Id = id;
Divider = divider;
Header = header;
ActionName = action;
ControllerName = controller;
MenuItemText = menuItemText;
Roles = roles;
ParentId = parentid;
}
}
特别是:
MenuItems.Where(s => s.ParentId == parentId).ToList();
如何选择ParentId==ParentId和
角色==“管理员”
在menuItem中有一个该menuItem所属角色的列表,我希望根据这些项目在该列表中是否具有特定角色来选择这些项目
如何仅选择在子列表中具有特定角色的菜单项以及上面提到的ParentId…这应该有效
MenuItems.Where(s => s.ParentId == parentId && s.Roles.Contains("Admin")).ToList();
或许
MenuItems.Where(s => s.ParentId == parentId && s.Roles.Count() == 1 && s.Roles.Contains("Admin")).ToList();
如果您希望菜单项仅具有管理员角色,则此功能应可用
MenuItems.Where(s => s.ParentId == parentId && s.Roles.Contains("Admin")).ToList();
或许
MenuItems.Where(s => s.ParentId == parentId && s.Roles.Count() == 1 && s.Roles.Contains("Admin")).ToList();
如果希望菜单项仅包含管理员角色,请尝试此操作,它应返回记录,其中Id=父Id,子列表中的角色为管理员
menuItems.Where(x => x.Id == parentId).Where(z => z.Roles.Any(y => y == "Admin"));
如果您想过滤子列表,也可以使用
menuItems.Where(x => x.Id == parentId).select(child => new MenuItems
{
//Populate parent properties
Roles = child.Roles.Where(x=>x=="Admin")
});
尝试此操作,它应该返回记录,其中Id=父Id,子列表中的角色是admin
menuItems.Where(x => x.Id == parentId).Where(z => z.Roles.Any(y => y == "Admin"));
如果您想过滤子列表,也可以使用
menuItems.Where(x => x.Id == parentId).select(child => new MenuItems
{
//Populate parent properties
Roles = child.Roles.Where(x=>x=="Admin")
});
您可以使用.Contains()
子句-。其中(s=>s.ParentId==ParentId和&s.Roles.Contains(“Admin”))
您可以使用.Contains()
子句-。其中(s=>s.ParentId==ParentId和&s.Roles.Contains(“Admin”)