2017-10-05 15 views
0

.NET에서 DirectoryServices를 통해 패턴을 포함하는 전자 메일을 조회하는 방법을 찾고 있습니다. 내가 EmailAddress = "*michelle*"에 위의 코드를 변경하는 경우DirectoryServices를 사용하여 유사한 전자 메일을 찾는 방법 (검색 포함/포함)?

 const ContextType contextType = ContextType.Domain; 
     var principalContext = new PrincipalContext(contextType); 
     var userPrincipal = new UserPrincipal(principalContext) 
     { 
      EmailAddress = "michelle*", 
     }; 

     foreach (var principal in principalSearcher.FindAll().Cast<UserPrincipal>()) 
     { 
      Console.WriteLine(principal.EmailAddress); 
     } 

그것은 (... 제 생각 엔 그렇게 나쁜하지 않은) 나는 단지이 검색의 종류 "로 시작"수행 할 수있는 기분이 그렇게 작동하지 않습니다. 아직도 나는 "좋아하는 것"또는 "패턴을 포함하고있는"검색을하고 싶다. 가능한가? 그렇다면 어떻게?

따르면에 : https://msdn.microsoft.com/en-us/library/aa746475(v=vs.85).aspx

어딘가에 일반 이름에 "밥"을 포함하는 항목을 가져 오기 :
(cn=*bob*)

, 나는 패턴은 또한 이메일에 사용될 수 있음을 예상 한 것이다

입니다

그건 사실이 아니야?

[편집] 나중에 필터링해야하는 사용자가 너무 많지 않도록 최대한 필터링 시스템을 활용하고 싶습니다.

+0

당신이 뜻은 모든 이메일을 원하는 "michelle"이라는 단어가 포함되어 있습니까? –

+0

@Cyber ​​Progs, 정확히 – Ehouarn

답변

0

다음과 같은 코드로 정규 표현식을 사용할 수 있습니다

static void Main(string[] args) 
    { 

     var myList = new List<string> 
     { 
      "a2michelle", 
      "michelle", 
      "michelle3f", 
      "xxmichellezz", 
      "noMatching", 
     }; 
     string pattern = @"\S*michelle\S*"; 
     System.Text.RegularExpressions.Regex regx = new System.Text.RegularExpressions.Regex(pattern); 

     var matchedList = myList.Where(m => regx.IsMatch(m)).ToList(); 
     foreach(var match in matchedList) 
     { 
      Console.WriteLine(match); 
     } 
     // end of main method 
    } 

출력은 다음과 같습니다

a2michelle
미셸
michelle3f
xxmichellezz

+1

필자는 필자의 응용 프로그램에서 필터링 프로세스를 수행하기위한 추가 오버 헤드 대신에 기준을 충족시키는 모든 사용자를 LDAP AD에서 직접 가져오고 싶습니다. – Ehouarn