Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net mvc在列表中包含列表的简单LINQ语句时遇到的问题_Asp.net_Asp.net Mvc_Linq - Fatal编程技术网

asp.net mvc在列表中包含列表的简单LINQ语句时遇到的问题

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; }

我一直在使用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 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”)