Постраничный поиск в AD на c#
От: TonyRamos  
Дата: 01.09.04 18:01
Оценка:
Привет всем!

В классе 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).
Сортировка работает нормально.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.