C# “应用多个”;或;使用示例查询筛选

C# “应用多个”;或;使用示例查询筛选,c#,active-directory,directoryservices,query-by-example,C#,Active Directory,Directoryservices,Query By Example,我正在尝试使用示例查询从Active Directory检索一组记录。此代码段将找到任何名为“John Smith”的记录: PrincipalContext context=新PrincipalContext(ContextType.Domain,contextName); 用户过滤器=新用户(上下文); var users=新列表(); filter.LastName=“Smith”; filter.GivenName=“John”; PrincipalSearchResult匹配项=nul

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

PrincipalContext context=新PrincipalContext(ContextType.Domain,contextName);
用户过滤器=新用户(上下文);
var users=新列表();
filter.LastName=“Smith”;
filter.GivenName=“John”;
PrincipalSearchResult匹配项=null;
PrincipalSearcher=新PrincipalSearcher(过滤器);
matches=searcher.FindAll()作为PrincipalSearchResult;

但是我想应用这些过滤器,这样我就可以匹配任何姓氏为“Smith”或“John”的记录,例如“Mary Smith”、“John Brown”。这是否可以使用示例查询,而不必运行多个搜索?我还没有找到任何文档化的示例。

您无法使用QBE进行任何类型的查询或搜索(按示例查询)

您可以使用所需的所有OR和and编写LDAP查询,单独运行该查询,获取可分辨名称,然后查找所有匹配的UserContext对象。。。我知道,这很糟糕

在建立会计管理结构时,有许多领域没有给予太多考虑

 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>;