2015-11-18 32 views
1

您好,我需要檢查一個DirectoryEntry是否是AD中的最後一個組。我不知道爲什麼,但我的老闆說他想要一個Messagebox。下面的方法只是我大項目的一小部分。它能做什麼?我在AD獲得一個組的所有用戶。每個用戶都保存在DirectoryEntry中。然後我打電話給其他的東西。這對這個問題無關緊要,請參閱「如果是德,請做些什麼」。檢查一個DirectoryEntry是否是Active Directory中組的最後一個C#

我不知道如何獲得最後一個元素這就是爲什麼我把這個:

var lastelement = users.LastElement; 

的方法。

private void Abgleich() 
    { 
     log.Debug("Abgleich in ActivDirectory aufgerufen"); 
     using (var context = new PrincipalContext(ContextType.Domain, Properties.Settings.Default.Servername, Properties.Settings.Default.Container)) 
     { 
      using (var group = GroupPrincipal.FindByIdentity(context, Properties.Settings.Default.ECADGruppe)) 
      { 
       if (group == null) 
       { 
        log.Error("Group does not exist"); 
       } 
       else 
       { 
        var users = group.GetMembers(true); 

        //Pseudo Code 
        var lastelement = users.LastElement; 
        //End Pseudo Code 

        foreach (UserPrincipal user in users) 
        { 
         DirectoryEntry de = (user.GetUnderlyingObject() as DirectoryEntry); 
         // Do Stuff if de 
         if (de == lastelement) 
         { 
          XtraMessageBox.Show("This is the last", "Remember", MessageBoxButtons.YesNo, MessageBoxIcon.Info); 
         } 
        } 
       } 
      } 
     } 
    } 
+0

弗洛裏安嗨,你是什麼意思與「是以lastElement「?它是最新創建的條目嗎?如果它的目錄項的特定屬性,再看看在這個問題的答案:http://stackoverflow.com/questions/2228468/how-to-retrieve-the-creation-date-of-an-ad -user-從網 – Koryu

+0

對於在組實施例是在主叫用戶100在AD的時刻。一個月後,AD組中有110個用戶。最後,我是指第100位或第110位用戶。該組的最後一個用戶。最後一個foreach正在進行。 –

+0

所以你可以調用'最後()''爲users'。我將發佈一個例子 – Koryu

回答

1

有幾種方法可以找到集合中的最後一個對象。

注意:如果您在聲明中使用var而不是 classname,則Intellisense將不會顯示所有方法。

一種方式是集合中的最後一個對象存儲在一個變量

PrincipalSearchResult<Principal> users = group.GetMembers(true); 


    UserPrincipal lastuser = (UserPrincipal)users.Last(); 


    foreach (UserPrincipal user in users) 
    { 
    //... 

    if (user == lastuser) 
    { 
     // Messagebox 
    } 
    } 

另一種選擇是使用迭代變量

for (int i = 0; i < users.Count(); i++) 
    {  

    if (i == users.Count()) 
    { 
     // .. last user 
    } 

    } 
+0

這有助於我的很多,但我只是說你的代碼到我的項目,但它從來沒有得到進入如果案例 –

+0

嗯,也許是因爲我用最後用戶的Principal和用戶的UserPrincipal。我編輯它。如果多數民衆贊成的問題,選擇是否要使用'UserPrincipal'或'Principal' – Koryu

+0

謝謝你的代碼工作 –

相關問題