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

时间:2012-10-18 13:37:41

标签: 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);
   }
}

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

2 个答案:

答案 0 :(得分:8)

最简单的方法是递归:

internal static void CreateLevel(LevelObject levelObject) {
    foreach (var l in levelObject.LevelObjects) {
        CreateLevel(l);
        AddEntities(l);
    }
}

答案 1 :(得分:0)

使用您的代码......

internal static void CreateLevel(LevelObject levelObject)
{
   foreach(LevelObject l1 in levelObject.LevelObjects)
   {
      CreateLevel(l1.LevelObjects);
      AddEntities(l1);
   }
}

将实现相同的目标