2012-10-04 5 views
0

에 유형 System.DirectoryServices.AccountManagement.Principal을 변환 할 수 없습니다;암시 적) (I 문자열의 목록</p> <p>VAR 이름 = 새로운 목록입니다 변수를 가지고 문자열

나는 .ValueGetGroups()의 속성이 아니므로, 이름

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

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

분명히이 컴파일되지 않습니다

.AccountManagement.Principal 쿼리의 결과의 이름을 지정합니다.

나는 내가 그룹의 값을 취득 할

암시 문자열

에 형 System.DirectoryServices.AccountManagement.Principal을 변환 할 수 없습니다 얻을

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

시도하는 경우와 이름을 문자열 목록으로 적용하십시오.

답변

2

없다 가치없는 방법. 문 buser.GetGroups()은 PrincipalSearchResult 컬렉션을 반환합니다.

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

그런 다음 이름을 가져 컬렉션을 반복 할 수

foreach(Principal pr in group) 
    Console.WriteLine(pr.Name); 
2

가치 탄 :

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

가있다 : 당신은 문자열의 목록에 사용자 이름의 목록을 얻고 싶다면

은 당신이 할 수있는 Value() 방법/확장 메서드처럼 아무것도

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