0
我目前正在編寫一些代碼,通過一些LDAP查詢來搜索Active Directory。我遇到了類型爲Principal
的對象,這是GroupPrincipal
或UserPrincipal
。但是,如果它是GroupPrincipal
它可能包含UserPrincipal
類型的對象。我想將類型UserPrincipal
的所有項目提取到一個列表中,以便我可以對其執行一些其他過程。如何添加一棵樹的所有樹葉到C#列表中
我想可以使用樹做,但我不知道如何。
這裏是我寫的是無效代碼,只去兩個節點深,打印的名字,而不是將其添加到列表:
foreach (var principal in group.GetMembers())
{
if (principal is UserPrincipal)
{
var uPrincipal = principal as UserPrincipal;
Console.WriteLine("User: " + uPrincipal.Name);
}
else if (principal is GroupPrincipal)
{
var gPrincipal = principal as GroupPrincipal;
Console.WriteLine("Group: " + gPrincipal.Name);
foreach(var principalito in gPrincipal.GetMembers())
{
if (principalito is UserPrincipal)
{
var uPrincipalito = principalito as UserPrincipal;
Console.WriteLine(">>User: " + uPrincipalito.Name);
}
else if(principalito is GroupPrincipal)
{
var gPrincipalito = principalito as GroupPrincipal;
Console.WriteLine(">>Group: " + gPrincipalito.Name);
}
}
}
}
我相信你可以使用方法:GroupPrincipal.GetMembers(true),然後檢查它是否屬於UserPrincipal類型,然後將其添加到列表中。 – Nyranith
是的,但如果該成員是一個組本身呢? – iliyandobrev