如何获取可以拥有子对象的IEnumerable子对象

时间:2015-07-19 03:53:45

标签: c# ienumerable children

在C#中,获取IEnumerable<T>所有子对象的最佳方法是什么,其中子对象可以有一个孩子?

以下是一个例子:

我有一个名为Test的班级,其中包含以下ID:

int id

int parentId

我有一个名为List<Test>的{​​{1}},其中填充了许多测试对象。<​​/ p>

每个testItems对象都有一个Test,并且id中的另一个parentId对象可以有一个Test

如果我有List,那么获得包含所有孩子(包括孩子的孩子)的id的最佳方法是什么?

以下是一些更多信息:

我有以下测试对象:

  • 一个
  • B'/ LI>
  • C
  • d

  • a没有父母

  • b的父母是

  • c的父母为b

  • d的父母是c

如果我有b的id,我怎样才能获得包含c的所有孩子的IEnumerable<Test>。此IEnumerable将包含c和d。

感谢。

1 个答案:

答案 0 :(得分:0)

这样的事情:

IEnumerable<Test> AllChildren(List<Test) list,Test mytest)
{
  foreach(var test in list)
  {
    if (test.parentid==mytest.id)
    {
       yield return test;
       foreach(var t in AllChildren(list,test))
       {
         yeild return t;
       }
    }
  }
}