C# Active Directory LDAP搜索筛选器或运算符语法

C# Active Directory LDAP搜索筛选器或运算符语法,c#,active-directory,ldap,C#,Active Directory,Ldap,我正在使用C#中的LDAP目录服务,使用一些筛选条件从LDAP中搜索用户。我想提供多个或筛选条件。例如firstName、lastName、telephone等。当我提供所有筛选器值时,它可以正常工作,但当我只提供一个或两个筛选器值时,它会出错 以下是我正在使用的示例代码: var LdapSearcher = new DirectorySearcher(RootDomain, "(&(objectclass=user)(sn=" + lastNa

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

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

var LdapSearcher = new DirectorySearcher(RootDomain, 
                   "(&(objectclass=user)(sn=" + lastName.Trim() + ")(givenName=" + firstName.Trim() + "))");
当我同时提供sn和givenName值时,就会得到结果。但是,它是一个OR搜索,用户将输入lastName或FirstName


如何在LDAP DirectorySearcher中应用或筛选?

您需要使用
操作符。根据您提供的信息,您的条件是:

  • objectclass
    必须等于“user”
  • sn
    givenName
    必须等于提供的值
假设用户提供了名称“John Smith”。您的筛选器应该如下所示:


(&(objectClass=user)(|(sn=Smith)(givenName=John))
等于
等于
进行谷歌搜索。。实际上,网上有很多关于如何做到这一点的例子。。如果你想要更简单的方法。。google
PrincipalContext
示例以及C#