gpt4 book ai didi

linq - 层次结构迭代和LINQ

转载 作者:行者123 更新时间:2023-12-01 10:14:54 25 4
gpt4 key购买 nike

假设我们有类

public class RMenuItem
{
public List<RMenuItem> ChildrenItems { get; }
public decimal OperationID { get; }
public string Name { get; }
}

如您所见 - 每个菜单项都可以有子项 - 与菜单中的往常一样。我的任务是遍历此列表的每个项目并对其应用一些操作。经典的决定是写递归迭代。但我很感兴趣,如果 LINQ 可以使我的任务更容易?例如,我想我们可以编写查询来获取对象的平面列表,我可以用 foreach 简单地对其进行迭代。但是我以这种方式进行的尝试还没有成功。所以任何帮助表示赞赏!

最佳答案

可能:

    public void PrintAllNames(RMenuItem rootItem)
{
Action<RMenuItem> print = null;
print = m =>
{
Console.WriteLine(m.Name);
m.ChildrenItems.ForEach(print);
};
print(rootItem);
}

请注意声明 print 的必要性,以便 print 可以使用自己。这直接相当于递归方法,我宁愿使用:

    public void PrintAllNames(RMenuItem rootItem)
{
Console.WriteLine(rootItem.Name);
rootItem.ChildrenItems.ForEach(PrintAllNames);
}

(尽管对于更复杂的情况,也许函数式解决方案最有意义)

关于linq - 层次结构迭代和LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1951713/

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