不知道如何遍历(n)C#中嵌套对象的数量

led*_*per 1 c# asp.net recursion loops

我查看了这篇文章,看看我是否可以将其作为起点,但我不认为它解决了我的特定问题.C#:N For循环

我有以下代码:

int criteriaCount = rule.SearchCriteria.Criteria.Count();
string criteria = "";
        for (int i = 0; i < criteriaCount; i++)
        {
            if (rule.SearchCriteria.Criteria[i].Criteria.Count() > 0)
            {
                criteria += string.Format("({0}" + System.Environment.NewLine, rule.SearchCriteria.Criteria[i].Display);
                criteria += string.Format("{0})" + System.Environment.NewLine, rule.SearchCriteria.Criteria[i].Criteria[i].Display);
            }
            else
            {
                criteria += string.Format("[{0}]" + System.Environment.NewLine, rule.SearchCriteria.Criteria[i].Display);
            }
        }
Run Code Online (Sandbox Code Playgroud)

为了解释一下,你有SearchCriteria和Array of Criteria [].我可以遍历这个并从每个Criteria对象中获取我需要的跟随,你可以看到我在做什么.

我也在深入研究二级,所以SearchCriteria.Criteria [n] .Criteria [n]和我可以放置一个for循环,并在那里抓取任何嵌套值.

我无法弄清楚的部分是如何解释可变数量的嵌套Criteria对象?我可能有这个:

SearchCriteria.Criteria[n].Criteria[n] ... (repeat a hundred times)... .Criteria[n]
Run Code Online (Sandbox Code Playgroud)

因此,它可能具有无限数量的嵌套对象,以及无数个兄弟对象(Criteria [0],Criteria [1] ...... Criteria [100000]就是我的意思).

有没有办法可以循环使用这一切?我听说过一个递归循环可能就是答案,我模糊地理解这个概念,但我不知道的是我怎样才能得到孩子和兄弟姐妹的数量?

Sam*_*Axe 5

递归循环的基本概念定义如下.您将被限制在堆栈上可用的空间.

private String GetSearchCriteria(Citeria root) {

  String result = root.Display;

  foreach (Criteria child in root.Criteria) {
    result += GetSearchCriteria(child);
  }

  return result;

}
Run Code Online (Sandbox Code Playgroud)