将具有3个级别的嵌套foreach循环转换为具有n个级别的重复

Tom*_*tom 0 c# recursion

我想转换以下代码来处理3个以上的foreach级别.

internal static void CreateLevel(LevelObject levelObject)
{
   foreach(LevelObject l1 in levelObject.LevelObjects)
   {
      foreach(LevelObject l2 in l1.LevelObjects)
      {
         foreach(LevelObject l3 in l2.LevelObjects)
         {
            AddEntities(l3);
         }
         AddEntities(l2);
      }
      AddEntities(l1);
   }
}
Run Code Online (Sandbox Code Playgroud)

每个LevelObject都有一个子级对象集合,一组实体和一个父级对象.我需要这个将对象结构转换为过滤器.任何人都知道如何转换这个?

eri*_*len 8

最简单的方法是递归:

internal static void CreateLevel(LevelObject levelObject) {
    foreach (var l in levelObject.LevelObjects) {
        CreateLevel(l);
        AddEntities(l);
    }
}
Run Code Online (Sandbox Code Playgroud)