Чтобы получить все результаты, вам необходимо установить значение DirectorySearcher.PageSize для ненулевого значения.
BTW вы должны также распоряжаться DirectorySearcher, когда вы закончите с этим
using(DirectorySearcher srch = new DirectorySearcher(dirEnt, "(objectClass=Group)", loadProps))
{
srch.PageSize = 1000;
var results = srch.FindAll();
}
Документация по API не очень ясно, но по существу:
когда вы постраничный поиск, параметр SizeLimit игнорируется, и все соответствующие результаты возвращаются по мере повторения результатов, возвращаемых FindAll. Результаты будут получены с сервера на странице за раз. Я выбрал значение 1000 выше, но при желании вы можете использовать меньшее значение. Компромисс: использование небольшого PageSize будет быстрее возвращать каждую страницу результатов, но потребует более частых вызовов на сервер при повторении большого количества результатов.
по умолчанию поиск не вызывается страницей (PageSize = 0). В этом случае возвращаются результаты до результата SizeLimit.
Как Biri отметил, что важно располагать SearchResultCollection возвращенное FindAll, в противном случае вы можете иметь утечку памяти, как описано в разделе Замечаний документации MSDN для DirectorySearcher.FindAll: http://msdn.microsoft.com/en-us/library/system.directoryservices.directorysearcher.findall.aspx
One способ избежать этого в .NET 2.0 или более поздней версии - написать метод оболочки, который автоматически удаляет SearchResultCollection. Это может выглядеть следующим образом (или может быть метод расширения в .NET 3.5):
public IEnumerable<SearchResult> SafeFindAll(DirectorySearcher searcher)
{
using(SearchResultCollection results = searcher.FindAll())
{
foreach (SearchResult result in results)
{
yield return result;
}
} // SearchResultCollection will be disposed here
}
Вы могли бы использовать это следующим образом:
using(DirectorySearcher srch = new DirectorySearcher(dirEnt, "(objectClass=Group)", loadProps))
{
srch.PageSize = 1000;
var results = SafeFindAll(srch);
}
Отлично обходной путь. Стоит перемирие. – Biri 2008-09-18 07:40:38