gpt4 book ai didi

c# - 对对象进行递归过滤Linq

转载 作者:行者123 更新时间:2023-12-03 20:36:54 26 4
gpt4 key购买 nike

是否有可能使用linq对对象递归过滤递归树中的所有项目。

这是我正在使用的模型。这是由另一个应用程序给我的

public class Menu
{
public string Name{get;set;}
public string Roles{get;set;}
public List<Menu> Children{get;set;}
}


当用户登录到我的应用程序时,我需要对照在菜单项中指定的角色检查用户角色。我知道我可以编写一个递归方法,使用for循环进行检查。

无论如何,我在那里使用'MenuList.Where(..检查角色)

提前致谢

最佳答案

我只是在Menu类中实现另一个方法:

public class Menu
{
public string Name { get; set; }
public string Roles { get; set; }
public List<Menu> Children { get; set; }
/// <summary>
/// Checks whether this object or any of its children are in the specified role
/// </summary>
public bool InRole(string role)
{
if (role == null)
{
throw new ArgumentNullException("role");
}
var inRole = (this.Roles ?? String.Empty).Contains(role);
if (!inRole & Children != null)
{
return Children.Any(child => child.InRole(role));
}
return inRole;
}
}


然后,您可以只编写LINQ查询,例如:

var inRole = menuList.Where(menu => menu.InRole("admin"));


它将以递归方式工作。

关于c# - 对对象进行递归过滤Linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11827569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com