2012-10-04 94 views
0

我有一个变量,它是一个字符串列表无法隐式转换类型System.DirectoryServices.AccountManagement.Principal串

变种名称=新名单();

我想一个.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隐式转换为字符串

我想组的值和将其应用于名称字符串列表

回答

2

有没有像Value()方法/扩展方法

如果你想在字符串列表用户名列表,你可以这样做:

List<string> userList = buser.GetGroups().Select(r=>r.Name).ToList(); 
2

Worth一个镜头:

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(); 
} 
1

有没有价值的方法。 陈述buser.GetGroups()返回一个PrincipalSearchResult集合。

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

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

foreach(Principal pr in group) 
    Console.WriteLine(pr.Name); 
相关问题