2015-11-18 26 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

谢谢你的代码工作 –

相关问题