查找组是递归成员的所有组并显示为树

时间:2015-07-03 17:15:58

标签: c# active-directory

使用方法GetGroups()查找我的论坛所属的群组。但是我必须通过GetGroups()查看我所获得的所有组中的每个成员,直到没有父项为止,所以我可以拥有如下所示的树结构。

示例:

MyGroup是我要搜索的群组。

我需要这样的输出:

>     ParentGroup
>     ---ChildGroup
>     ------MyGroup
> 
>     AnotherParentGroup
>     ---AnotherChildGroup
>     ------AnotherChildChildGroup
>     ---------MyGroup

MyGroup是多个组的成员时会发生这种情况。然后我必须寻找每个组以及它所属的组,直到我到达根组。如上所示,这可能导致多个树。

有人可以帮助编写伪代码,或者有人可以给我一些关于使用什么方法的建议吗?

1 个答案:

答案 0 :(得分:0)

此控制台应用程序可以执行您想要的操作,根据需要进行切换和更改:

class Program
{
    static void Main(string[] args)
    {
        using (var context = new PrincipalContext(ContextType.Domain))
        using (var user = UserPrincipal.Current)
        using (var userGroups = user.GetGroups())
        {
            PrintGroups(userGroups, 0);
        }
        Console.ReadLine();
    }

    static void PrintGroups(PrincipalSearchResult<Principal> groups, int level)
    {
        foreach (var group in groups)
        {
            Console.Write(new string('-', level * 3));
            Console.WriteLine(group.Name);
            using (var groupGroups = group.GetGroups())
            {
                PrintGroups(groupGroups, level + 1);
            }
        }
    }
}