使用“按示例查询”应用多个“或”过滤器

时间:2013-10-02 02:15:49

标签: c# active-directory directoryservices query-by-example

我正在尝试使用“按示例查询”从Active Directory检索一组记录。此代码段将找到名为“John Smith”的任何记录:

 PrincipalContext context = new PrincipalContext(ContextType.Domain, contextName);
 User filter = new User(context);
 var users = new List<User>();            
 filter.LastName = "Smith";
 filter.GivenName = "John";
 PrincipalSearchResult<Principal> matches = null;            
 PrincipalSearcher searcher = new PrincipalSearcher(filter);
 matches = searcher.FindAll() as PrincipalSearchResult<Principal>;

但我想应用这些过滤器,以便我可以匹配任何记录的姓氏为“Smith”给定名称“John”,例如“玛丽史密斯”,“约翰布朗”。这可以使用Query by Example - 而不必运行多个搜索吗?我找不到任何记录在案的例子。

1 个答案:

答案 0 :(得分:2)

您不能使用QBE进行任何类型的OR搜索(按示例查询)。

可以编写一个包含所需OR和AND的LDAP查询,单独运行该查询,获取可分辨名称,然后查找所有匹配的UserContext对象...我知道,它很糟糕。

在将AccountManagement结构放在一起时,有很多方面没有给予太多考虑。