gpt4 book ai didi

c# - 遍历带有子项的 IEnumerable 以查找特定条目

转载 作者:太空宇宙 更新时间:2023-11-03 18:06:19 28 4
gpt4 key购买 nike

在一个 mvc 应用程序中,我有一个由以下结构组成的菜单

public class MenuItem
{
public string Action {get;set;}
public string Controller {get;set;}
public string Text {get;set;}
public List<MenuItem> Children {get;set;}
}

考虑一个简单的组合

Root
\-Item1
\-Item2
\-Item2_1
\-Item2_2
\-Item_2_2_1
\-Item_2_2_2
\-Item3

我想获取项目 Item_2_2_2(考虑它有 Action="Index", Controller="ABC")

我如何编写一个函数(或更好的 T 扩展方法)来遍历集合并获取与该条件匹配的项目?

谢谢

最佳答案

您可以编写扩展方法来“展平”层次结构...

public static IEnumerable<T> Flatten<T>(this T value, Func<T, IEnumerable<T>> inner) {
foreach (var i in inner(value)) {
foreach (var j in Flatten(i, inner)) {
yield return j;
}
}
yield return value;
}

...然后使用普通的 LINQ:

items.Flatten(i => i.Children).Where(i => ...

关于c# - 遍历带有子项的 IEnumerable<T> 以查找特定条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28514920/

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