同时搜索名称和samaccountname

时间:2012-03-29 10:48:09

标签: c# active-directory ldap directoryservices

目前我在sharepoint 2010中有一个自定义人员选择器,它会在帐户名称上搜索搜索字词,但也会在名称上搜索。

然而,它以2种不同的方法完成。我没有复杂AD查询的经验,但我想我只能在一行和一行中使用OR进行此操作?

我需要的是它匹配samaccountname的一部分或名称的一部分

public static DataTable ExecuteNameQuery(string rootPath, string search)
    {
        string filter = "(&(objectCategory=person)(objectClass=user)(name=*" + search + "*))";
        return ExecuteADQuery(rootPath, filter);
    }


        public static DataTable ExecutesAMAccountNameQuery(string sAMAccountName)
        {
            string filter = "(&(objectCategory=person)(objectClass=user)(sAMAccountName=*" + sAMAccountName + "*))";
            return ExecuteADQuery("GC:", filter);
        }

1 个答案:

答案 0 :(得分:3)

是的,您可以根据您的示例使用以下语法对LDAP查询进行分组和/或运算符:

string filter = "(&(objectCategory=person)(objectClass=user)(|(name=*" + search + "*)(samAccountName=*" + search + "*)))";

应该对名称或samAccountName执行搜索。

另外,MSDN有primer on LDAP queries

希望有所帮助