【发布时间】:2022-06-15 01:25:09
【问题描述】:
我想从单个父节点获取所有子节点。子节点可以有自己的子节点,我也想得到它们。
我能够将子级提取到 n 级,但无法在第二级子级之后将所有子级放在一个列表中。
public async Task<IEnumerable<ChildOrganisation>> Execute(Guid parentOrgId)
{
// GetChildrenAsync gets the model for all the childrens from the parentorgid.
var childOrganisations = await GetChildrenAsync(parentOrgId);
foreach (var childOrg in childOrganisations)
{
if (childOrg.OrganisationId != null)
{
var subChildOrganisations = await GetChildrenAsync(childOrg.OrganisationId);
if (subChildOrganisations.Count() > 0)
{
childOrganisations = childOrganisations.Concat(subChildOrganisations);
await Execute(childOrg.OrganisationId);
}
}
}
return childOrganisations;
}
当有 6 个孩子并且缺少一个在第 3 级孩子时,上面的代码返回给我 5 个孩子。
有人可以指导吗?
【问题讨论】:
-
您可以在此处获取
Faltten实现:stackoverflow.com/questions/11830174/…。或者使用来自MoreLINQ库(github.com/morelinq/MoreLINQ#flatten)的版本 -
如果层次结构可以任意深,您可能想递归地执行此操作。