基于DistinguishedName排序时出错

时间:2012-05-02 06:40:48

标签: c# sorting ldap distinguishedname

我正在连接到LDAP,我只得到类型用户的classobject,我只想获得专有名称,当我不做任何排序时,(我评论排序行)结果很好,用户数是13.我可以打印所有用户,但是它们没有按升序排列,所以我根据distinguishedName进行了排序,当我将这些行添加到代码中时,它给了我一个空的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];

2 个答案:

答案 0 :(得分:0)

在DataView中进行类似的排序:

DataTable dtUsers = new DataTable("Users");
dtUsers.Columns.Add("distinguishedName");
DataView view = dtUsers.DefaultView;
view.Sort = "distinguishedName";

答案 1 :(得分:0)

FWIW,我的建议通常是不对服务器端进行排序。客户端可以轻松地排序并保持DC的排序负载。在某些情况下,您确实需要服务器进行排序,但如果您可以避免它,我会。你的管理员会感谢你。