在.Net 4.0中,DirectorySearcher 类可以用于查询LDAP目录,并且支持分页查询。以下是一个简单的示例代码:
using System;
using System.DirectoryServices;
public class LdapPagination
{
public static void Main(string[] args)
{
string ldapPath = "LDAP://your-ldap-server";
string userName = "your-username";
string password = "your-password";
DirectoryEntry entry = new DirectoryEntry(ldapPath, userName, password);
DirectorySearcher searcher = new DirectorySearcher(entry);
searcher.Filter = "(&(objectClass=user)(objectCategory=person))";
searcher.PageSize = 10;
searcher.PropertiesToLoad.Add("cn");
searcher.PropertiesToLoad.Add("samaccountname");
searcher.PropertiesToLoad.Add("mail");
int totalCount = 0;
int totalPages = 0;
int currentPage = 0;
while (true)
{
currentPage++;
SearchResultCollection results = searcher.FindAll();
if (results.Count == 0)
{
break;
}
totalCount += results.Count;
totalPages++;
Console.WriteLine("Page {0}:", currentPage);
foreach (SearchResult result in results)
{
Console.WriteLine("{0}: {1}", result.Properties["cn"][0], result.Properties["samaccountname"][0]);
}
searcher.FindAll();
searcher.VirtualList = results[results.Count - 1].VirtualListViewContext;
}
Console.WriteLine("Total count: {0}", totalCount);
Console.WriteLine("Total pages: {0}", totalPages);
}
}
在这个示例中,我们使用DirectorySearcher类来查询LDAP目录中的用户信息,并且设置了分页大小为10。在每次查询时,我们使用VirtualList属性来设置查询的起始位置,以便实现分页查询。
需要注意的是,分页查询可能会受到LDAP目录的限制,例如,如果目录中的对象数量很大,分页查询可能会变得非常慢。因此,在实际应用中,需要根据具体情况进行优化。
领取专属 10元无门槛券
手把手带您无忧上云