I work for an organization with over 18K users and the Linq To AD code only returned 1000 records. I have adjusted the code to handle these two issues:
1) 1000 limit on returned records.
2) Possible memory leak due to not properly disposing of (DirectorySearcher.FindAll Method) as reported on the FindAll help page, remarks section, on MSDN.
In fixing the code I have do the following using on the client side to accomodate for issue #2 :
using ( var usersDS = new DirectorySource<User>( ROOT, SearchScope.Subtree ) )
users = from usr in usersDS
users = users.OrderBy( user => user.Name ).ToList(); // Sort by name after the fact.
I have uploaded my DirectorySource.cs which addresses those two issues.