gpt4 book ai didi

c# - 通过 parent child 的多个 Foreach 循环

转载 作者:行者123 更新时间:2023-12-02 15:04:14 25 4
gpt4 key购买 nike

处理这种情况的最佳方法是什么

        foreach (var level1 in Levels.Where(l => l.PARENTID == 0))
{
// Print "LEVEL 1: Title"

foreach (var level2 in Levels.Where(l => l.PARENTID == level1.ROOTID))
{
// Print "Level 2: Sub Title"

foreach (var level3 in Levels.Where(l => l.PARENTID == level2.ROOTID))
{
// Print "Level 3: Header"

... etc ...
}
}
}

最佳答案

我会使用递归来做到这一点

void ProcessLevels(IEnumerable<Level> levels, int parentID, int levelNum)
{
foreach (var subLevel in levels.Where(l => l.PARENTID == parentID))
{
//print Level levelNum
//use logic to format according to the specific level if desired
ProcessLevels(levels, subLevel.ROOTID, levelNum + 1);
}
}

你可以直接调用它,然后使用

ProcessLevels(levels, 0, 1);

这样做的好处是,如果您的级别比 3 深更深,它将继续沿链进行处理。您还可以通过执行以下操作将其限制在 3 个级别(或您选择的任何级别):

void ProcessLevels(IEnumerable<Level> levels, int parentID, int levelNum, int levelsDeep)
{
foreach (var subLevel in levels.Where(l => l.PARENTID == parentID))
{
//print Level levelNum
//use logic to format according to the specific level if desired
if (levelsLeft > 0)
{
ProcessLevels(levels, subLevel.ROOTID, levelNum + 1, levelsDeep - 1);
}
}
}

然后调用电话:

ProcessLevels(levels, 0, 1, 3);

关于c# - 通过 parent child 的多个 Foreach 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22974527/

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