1

我有一个变量,它是一个字符串列表

变量名称 = 新列表();

我想将.AccountManagement.Principal查询结果的名称分配给名称

 PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
 UserPrincipal buser = UserPrincipal.FindByIdentity(ctx, user);

 if (buser != null)
 {
     var group = buser.GetGroups().Value().ToList();
     names = group;
 }

显然这不会编译,因为.Value它不是GetGroups().

如果我尝试

var group = buser.GetGroups().Value().ToList();
names = group;

我明白了

无法将 System.DirectoryServices.AccountManagement.Principal 类型隐式转换为字符串

我想获取组的值并将其应用到字符串列表中

4

3 回答 3

3

没有什么比Value()方法/扩展方法

如果您想在字符串列表中获取用户名列表,您可以执行以下操作:

List<string> userList = buser.GetGroups().Select(r=>r.Name).ToList();
于 2012-10-04T10:46:32.803 回答
2

值得一试:

PrincipalContext ctx = new PrincipalContext(ContextType.Domain); 
UserPrincipal buser = UserPrincipal.FindByIdentity(ctx, user); 
if (buser != null) 
{ 
    names = (
        from 
            groupPrincipal in buser.GetGroups() 
        select 
            groupPrincipal.Name
        ).ToList(); 
} 
于 2012-10-04T10:41:46.540 回答
1

没有价值方法。该语句buser.GetGroups()返回一个 PrincipalSearchResult 集合。

  PrincipalSearchResult<Principal> group = buser.GetGroups();

然后您可以遍历集合,以获取名称

  foreach(Principal pr in group)
     Console.WriteLine(pr.Name);
于 2012-10-04T10:46:52.817 回答