C# 如何构建筛选器以在.NET应用程序中搜索Active Directory中的文件室?

C# 如何构建筛选器以在.NET应用程序中搜索Active Directory中的文件室?,c#,active-directory,ldap,directorysearcher,C#,Active Directory,Ldap,Directorysearcher,我想从active directory获取我们公司的所有房间,为此我使用了DirectoryEntry和DirectorySearcher类。我需要一个过滤器来获取正确的数据,但我不知道如何构建过滤器来搜索房间 以下是我需要筛选的属性: 这是我的密码: public static DataTable GetRooms(string domaincontroller) { DataTable list = new DataTable(); string filter = "(

我想从active directory获取我们公司的所有房间,为此我使用了
DirectoryEntry
DirectorySearcher
类。我需要一个过滤器来获取正确的数据,但我不知道如何构建过滤器来搜索房间

以下是我需要筛选的属性:

这是我的密码:

public static DataTable GetRooms(string domaincontroller) 
{
    DataTable list = new DataTable();

    string filter = "(&(objectClass=user)(objectCategory=user)(|(telephoneNumber=*)(mail=*)))";

    //....

    return list; 
}

我只需要过滤器。剩下的我知道:(

你那里的过滤器会给你的每个用户一个电话号码或电子邮件地址

如果您要查找带有电话号码或电子邮件地址的房间,只需添加
(msExchResourceMetaData=ResourceType:Room)

如果您想要所有房间,不管他们是否有电话号码或电子邮件地址(我猜您有),那么请删除不必要的条件:

string filter = "(&(objectClass=user)(objectCategory=user)(msExchResourceMetaData=ResourceType:Room))";

注意:在使用Active Directory时,请确保正在使用块将所有内容包装在
中,否则将导致内存泄漏。

您的过滤器将为每个用户提供电话号码或电子邮件地址

如果您要查找带有电话号码或电子邮件地址的房间,只需添加
(msExchResourceMetaData=ResourceType:Room)

如果您想要所有房间,不管他们是否有电话号码或电子邮件地址(我猜您有),那么请删除不必要的条件:

string filter = "(&(objectClass=user)(objectCategory=user)(msExchResourceMetaData=ResourceType:Room))";
注意:在使用Active Directory时,请确保正在使用
块在
中包装所有可以包装的内容,否则会导致内存泄漏