C# 如何使用激活用户、电子邮件或电话号码和用户名为Active Directory用户构建QBE?

C# 如何使用激活用户、电子邮件或电话号码和用户名为Active Directory用户构建QBE?,c#,asp.net,arraylist,active-directory,C#,Asp.net,Arraylist,Active Directory,我使用Active Directory。我编写了一种方法,可以使用过滤器从Active Directory获取所有用户,并在我的下拉列表的阵列列表中列出用户 守则: private ArrayList GetReceiverList(string Domain) { ArrayList List = new ArrayList(); DirectoryEntry Entry = new DirectoryEntry(Domai

我使用Active Directory。我编写了一种方法,可以使用过滤器从Active Directory获取所有用户,并在我的
下拉列表
阵列列表中列出用户

守则:

 private ArrayList GetReceiverList(string Domain) 
        {
            ArrayList List = new ArrayList();

            DirectoryEntry Entry = new DirectoryEntry(Domain);

            string filter = "(&(objectClass=user)(objectCategory=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(sn=*)(|(telephoneNumber=*)(mail=*))(cn=*))"; 

            DirectorySearcher Searcher = new DirectorySearcher(Entry, filter);

            foreach (SearchResult usr in Searcher.FindAll())
            {
                List.Add(GetLdapProperty(usr, "displayName"));
            }

            return List;
        }
这项工作,我现在想使用
System.DirectoryServices.AccountManagement
,为此我写了一个方法,这也很有效。但是我想在我的第一个方法中使用过滤器。我怎么能做到

我的新方法的代码是:

 public static ArrayList GetAllActiveDirectoryUsersByDisplayName(string dc)
        {
            ArrayList list = new ArrayList();

            PrincipalContext ctx = new PrincipalContext(ContextType.Domain, dc);
            UserPrincipal u = new UserPrincipal(ctx);
            u.Surname = "*";
            PrincipalSearcher ps = new PrincipalSearcher(u);
            PrincipalSearchResult<Principal> results = ps.FindAll();

            foreach (UserPrincipal usr in results)
            {
                list.Add(usr.Name);
            }

            list.Sort();

            return list;
        }

您要为公共静态ArrayList GetAllActiviteDirectoryUsersByDisplayName(字符串dc)传递什么值?
dc
等于什么?例如(company.com)这是域控制器我没有得到错误我只想要第一个方法的过滤器的结果。。。我现在得到所有用户,但我只想激活用户的电子邮件或电话号码等。。。查看我的更新:p您需要输入samAccount名称并进行搜索,或者您必须更改fliter为什么要使用
ArrayList
。它已经过时了。如果需要任意对象的列表,则应使用
list
 string filter = "(&(objectClass=user)(objectCategory=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(sn=*)(|(telephoneNumber=*)(mail=*))(cn=*))";