Привет всем!
В классе DirectorySearcher есть свойство PageSize — кол-во эл-тов при постраничном поиске.
Непонятно одно — как этим пользоваться? FindOne всегда возвращает один элемент, а FindAll дает все найденные элементы. Пример кода:
DirectorySearcher searcher = new DirectorySearcher ( usersEntry );
searcher.Filter = "(initials=67)";
searcher.PropertiesToLoad.Add ( "cn" );
searcher.PageSize = 1;
// Sorting parametres
SortOption sortOptions = new SortOption ( ); // direction is asc by default
sortOptions.PropertyName = "cn";
searcher.Sort = sortOptions;
SearchResultCollection results = searcher.FindAll ( );
if ( results.Count != 0 )
{
Console.WriteLine ( "Clients found" );
IEnumerator enumer = results.GetEnumerator ( );
enumer.Reset ( );
while ( enumer.MoveNext ( ) )
{
SearchResult res1 = (SearchResult) enumer.Current;
// string sss = res1.Properties [ "cn" ].ToString ( );
foreach ( Object propValue in res1.Properties[ "cn" ] )
{
Console.WriteLine ( propValue );
} // foreach
// Console.WriteLine ( sss );
Console.WriteLine ( "------------------------------" );
} // while
} // if
else
Console.WriteLine ( "Clients not found" );
Здесь в стандартном контейнере Users (с ним связана переменная usersEntry) ведется поиск пользователей, у которых в инициалах (атрибут initials) записано 67.
Размер страницы — 1, а выводятся столько, сколько их там есть (в моих тестах — 2).
Сортировка работает нормально.