Active Directory LDAP搜索过滤器或运算符语法

时间:2015-06-08 19:52:01

标签: c# active-directory ldap

我在C#中使用LDAP目录服务,使用某些过滤条件从LDAP搜索用户。我想提供多个OR过滤条件。例如firstName,lastName,telephone等。当我提供所有过滤器值时它工作正常但在我提供一个或两个过滤器值时出错。

以下是我使用的示例代码:

var LdapSearcher = new DirectorySearcher(RootDomain, 
                   "(&(objectclass=user)(sn=" + lastName.Trim() + ")(givenName=" + firstName.Trim() + "))");

当我提供sn和givenName值时,我得到了结果。但是,它是一个OR搜索,用户将输入lastName或FirstName。

如何在LDAP DirectorySearcher中应用OR Filter。?

1 个答案:

答案 0 :(得分:3)

您需要使用|运算符。根据您的提供,您的条件是:

  • objectclass必须与“user”相等
  • sngivenName必须等于提供的值

假设用户提供了名称“John Smith”。您的过滤器应如下所示:

(&(objectClass=user)(|(sn=Smith)(givenName=John)))