0

LDAP に接続していて、タイプ user の classobject のみを取得しています。識別名のみを取得したいのですが、並べ替えを行わない場合 (並べ替えの行にコメントを付けます)、結果は問題なく表示されます。ユーザーは 13 です。すべてを印刷できますが、昇順ではないため、識別名に基づいて並べ替えを行いました。これらの行をコードに追加すると、searchResults の空のコレクションが得られます。

理由がわからないのですが、並べ替えを行うとデータが移動し、並べ替えを停止するとデータがそこにあるのはなぜですか。ソートの何が問題になっていますか?

DirectoryEntry entry = new DirectoryEntry(_path, username, 
DirectorySearcher mySearcher = new DirectorySearcher(entry);
mySearcher.Filter = ("(objectClass=user)");
SortOption option = new SortOption("distinguishedName", System.DirectoryServices.SortDirection.Ascending);
mySearcher.Sort = option;
DataSet ds = new DataSet();
DataTable dtUsers = new DataTable("Users");
dtUsers.Columns.Add("distinguishedName");
SearchResultCollection ss = mySearcher.FindAll();
SearchResult a = ss[0];
4

2 に答える 2

0

FWIW、通常、サーバー側でソートしないことをお勧めします。クライアントは、簡単に並べ替えて、並べ替えの負荷を DC から切り離すことができます。サーバーの並べ替えが本当に必要な場合がいくつかありますが、回避できる場合はそうします. あなたの管理者はあなたに感謝します。

于 2012-06-27T20:32:57.773 に答える
0

次のように DataView で並べ替えを行います。

DataTable dtUsers = new DataTable("Users");
dtUsers.Columns.Add("distinguishedName");
DataView view = dtUsers.DefaultView;
view.Sort = "distinguishedName";
于 2012-05-02T07:28:18.820 に答える