【问题标题】:Recursive function for n childs in c#?c#中n个孩子的递归函数?
【发布时间】: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 个孩子。

有人可以指导吗?

【问题讨论】:

标签: c# recursion


【解决方案1】:

您没有使用第 13 行从 Execute 返回的值。试试这个。

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 Execute(childOrg.OrganisationId);
            if (subChildOrganisations.Count() > 0)
            {
                childOrganisations = childOrganisations.Concat(subChildOrganisations);
            }
        }
    }
    return childOrganisations;
}

【讨论】:

    猜你喜欢
    • 2013-08-22
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 2021-12-09
    相关资源
    最近更新 更多