首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Asp .Net中从Active Directory中获取不同的部门名称?

如何在Asp .Net中从Active Directory中获取不同的部门名称?
EN

Stack Overflow用户
提问于 2017-06-16 17:39:36
回答 1查看 1K关注 0票数 1

我想从AD中获得唯一或不同的部门名称,那么正确的查询是什么?下面是我的代码:

代码语言:javascript
复制
private static DomainController GetDomainController(string domainpath)
{
    var domainContext = new DirectoryContext(DirectoryContextType.Domain, domainpath);
    var domain = Domain.GetDomain(domainContext);
    var controller = domain.FindDomainController();
    return controller;
}

private static MyMethod()
{
    var domainController = GetDomainController(ActiveDirectorySettings.DomainPath);

    // Lookup the information in AD
    var ldapEntry = new DirectoryEntry(string.Format("LDAP://{0}", domainController)) { AuthenticationType = AuthenticationTypes.Secure | AuthenticationTypes.FastBind };
    DirectorySearcher ds;

    ds = new DirectorySearcher(ldapEntry)
    {
        SearchScope = SearchScope.Subtree,
        Filter = "(&" + "(objectClass=user)" + "(department=" + departmentname + "*))"
    };

    ds.PropertiesToLoad.Add("department");
    if (ds.FindAll().Count >= 1)
    {
        //do something....
    }
}

在这里,我得到了所有部门的名称,包括重复项。但我想要的是-

如果3个用户属于同一个部门(X),那么我想要部门(X)一次,而不是三次。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-16 18:09:27

您可以使用LINQ来获得唯一/不同的搜索结果。以下是代码片段:

代码语言:javascript
复制
if (ds.FindAll().Count >= 1)
{
    var overallSearchResult = ds.FindAll();
    //to apply distinct on path property of elements in the collection
    var uniqueSearchResultsForPath =  overallSearchResult.Cast<System.DirectoryServices.SearchResult>().Select(x => x.Path).Distinct();

    //To apply distinct on any specific property in the "Properties" property of the elements in the collection
    //this will give you list of distinct departments for example

    var uniqueSearchResultsForDepartment = overallSearchResult.Cast<System.DirectoryServices.SearchResult>().Select(x => x.Properties["department"][0]).Distinct();
}

您必须在编写此代码的C#文件中包含using System.Linq;名称空间。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44585939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档