如何获得IEnumerable的可以有子对象的子对象
在C#中,如何获得所有子对象的最佳方式,其中的子对象可以有子对象?如何获得IEnumerable的可以有子对象的子对象
下面是一个例子:
我有一个叫Test
类,它有以下ID:
int id
int parentId
我有一个List<Test>
称为testItems
被填充了许多测试对象。
每个Test
对象,具有id
,并且可以具有在List
Test
另一个对象的parentId
。
如果我有一个id
,获得所有孩子(包括孩子的孩子)的IEnumerable<Test>
的最佳方式是什么?
下面是一些更多的信息:
我有以下试验对象:
- 一个
- b
- Ç
d
一个没有父
2b具有
℃的父母有B的母
d已丙
的父母如果我有B的ID,我怎样才能得到包含c的所有孩子的IEnumerable
。这IEnumerable
将包含c和d。
谢谢。
事情是这样的:
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;
}
}
}
}
代码*感觉*难以想象的慢(也是正确的)。 –
是的。如有必要,您可以加快速度。建立一个字典或类似的东西,但不要优化不需要的东西。 –
既然这样,你的'Test'类可以说是没有任何_ “子对象” _仅仅标识OO。你是否不知道'列表'作为一个成员?请发布您的整个班级定义 –
MickyD
我有填充了测试对象的列表。 –
user3736648
好的,但是_root container_在别的地方,或者每个Test都有那个成员?正如我所说,请张贴您的_entire_定义 – MickyD