Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>helper class and enum</p> <pre><code>public enum ActiveDirectoryObjectClass { Computer, User, Domain, Group, } public static class ActiveDirectorySearcher { public static string GetCurrentDomainName() { string result; using (Domain domain = Domain.GetCurrentDomain()) { result = domain.Name; } return result; } public static IEnumerable&lt;T&gt; Select&lt;T&gt;( ActiveDirectoryObjectClass activeDirectoryObjectClass, Func&lt;DirectoryEntry, ActiveDirectoryObjectClass, bool&gt; condition, Func&lt;DirectoryEntry, T&gt; selector ) { List&lt;T&gt; list = new List&lt;T&gt;(); using (Domain domain = Domain.GetCurrentDomain()) using (DirectoryEntry root = domain.GetDirectoryEntry()) { string filter = string.Format("(objectClass={0})", activeDirectoryObjectClass); using (DirectorySearcher searcher = new DirectorySearcher(filter)) { searcher.SearchRoot = root; searcher.SearchScope = SearchScope.Subtree; using (SearchResultCollection result = searcher.FindAll()) { foreach (SearchResult item in result) { using (DirectoryEntry entry = item.GetDirectoryEntry()) { if (condition(entry, activeDirectoryObjectClass)) { list.Add(selector(entry)); } } } } } } return list; } } </code></pre> <p>how to use</p> <pre><code> public IEnumerable&lt;User&gt; GetUsers() { return ActiveDirectorySearcher.Select( ActiveDirectoryObjectClass.User, (entry, adObjectClass) =&gt; string.Compare(entry.SchemaClassName, adObjectClass.ToString(), StringComparison.InvariantCultureIgnoreCase) == 0, _ =&gt; new User { Name = _.Name.Substring(3), Domain = ActiveDirectorySearcher.GetCurrentDomainName(), }); } </code></pre> <p>Note: User in sample - custom class with properties Name, Domain, etc.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload