2017-10-05 55 views
0

我正在尋找一種通過.NET中的DirectoryServices查找包含模式的電子郵件的方法。如何查找與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); 
     } 

如果我改變以上EmailAddress = "*michelle*"我的代碼將無法正常工作,所以我覺得我只能執行一種搜索的「開頭」(這是不是壞我猜...)。不過,我還是希望有一些「喜歡」或「包含模式」的搜索,這有可能嗎?如果是這樣,怎麼樣?

據: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

相關問題