I'm not sure I understand your question, but why do not you create a filter in the loop, and then look for a time. The filter looks like this:
(|(objectSid=sid1)(objectSid=sid2)(...)(objectSid=sidn))
If you have .NET 3.5 or higher, you can work with the principals .
According to How does the search Active Directory system , the maximum size of the LDAP query that tries to perform the server is 10485760 bytes. If the server receives a request, which is greater than this value, it closes the connection. Having said that, I have never tested it.
source share