Extension methods to get direct reports from user
Why are you ToListing your collections when you are returning IEnumerable&lt;T&gt;? Unless you have a good reason (rare) then leave them as IEnumerable

GetAsDirectoryEntry seems redundant - and in fact hides the fact that it could be null, whereas somebody calling as directly will know that null is possible. I note when you call it you do not test for null.

In general I prefer the lamba inputs as short names escpecially when the scope is so small, so do

   .Where( dn=&gt;!dn.IsNullOrWhiteSpace())


instead of

   .Where(
        directReportDistinguishedName =&gt;
            !directReportDistinguishedName.IsNullOrWhiteSpace())