目前我在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);
}
答案 0 :(得分:3)
是的,您可以根据您的示例使用以下语法对LDAP查询进行分组和/或运算符:
string filter = "(&(objectCategory=person)(objectClass=user)(|(name=*" + search + "*)(samAccountName=*" + search + "*)))";
应该对名称或samAccountName执行搜索。
另外,MSDN有primer on LDAP queries。
希望有所帮助