0
我有一个查询要发送到AD并获取所有电子邮件。我的问题是,查询是否需要相当长的时间才能执行(通过AJAX
15-20秒)以拉动大约3000个电子邮件地址。我正在考虑将结果集(位于列表中)存储在memory cache
中。我将这个列表放入一个下拉列表中,用电子邮件填充它。这里是我的查询:将查询结果存储在缓存中
public class EmailDetails
{
public string EmailAddress { get; set; }
public string EmailDisplayName { get; set; }
}
public List<EmailDetails> EmailInformation { get; set; }
[WebMethod]
public static List<EmailDetails> GetEmails()
{
List<EmailDetails> emailAddresses = new List<EmailDetails>();
//queries AD to pull all users
var search = new DirectorySearcher();
search.Filter = "(&(objectClass=user)(mail=*)(displayName=*))";
search.PageSize = 1000;
using (var results = search.FindAll())
{
foreach (SearchResult result in results)
{
emailAddresses.Add(new EmailDetails
{
EmailAddress = result.Properties["mail"][0].ToString(),
EmailDisplayName = result.Properties["displayName"][0].ToString()
});
}
}
//sort email address list alphabetically and return sorted list
List<EmailDetails> sortedEmailAddresses = emailAddresses.OrderBy(o => o.EmailDisplayName).ToList();
return sortedEmailAddresses;
所以我的困境是,我试图找到一种方法来加快下拉的过程中被加载了返回的列表。什么是实现这一目标的最佳方式?内存缓存?我愿意接受任何您认为合理的选择...
我该如何实现它? (即,我将在何处放置声明的语法?) – Code
尝试此更新的解决方案 – AlexanderMP
非常感谢你的队友。这就像一个魅力! – Code