根据此处找到的代码,我正在查询一个 AD 组以填充关联的下拉列表。下面的代码大约需要 30 秒才能运行,所以想确保我正在使用最好的代码吗?理想情况下,我希望它运行得更快,但感谢大约 1500 人不会花费几秒钟。
// define AD group to use for populating associate list...
const string groupName = "Group-Name-X";
// define array objects...
var userIdLookup = new SortedList();
var emailLookup = new SortedList();
var listContents = new SortedList<string, string>();
// initialise the AD tools class...
var adm = new ADMethods();
// get the members of the specified AD group...
GroupPrincipal group = adm.GetGroup(groupName);
// iterate over its members
foreach (Principal p in group.Members)
{
// get the data for the user...
var groupMember = adm.GetUser(p.SamAccountName);
// if user account found...
if (groupMember != null)
{
// get the user's mail address...
string mailAddress = groupMember.EmailAddress ?? p.SamAccountName;
// if domain extension present ...
if (mailAddress.Contains("@"))
{
// remove it...
mailAddress = mailAddress.Split('@')[0].Trim();
}
// create a name starting with surname...
string associateName = string.Format("{0},", groupMember.Surname);
// append the first name...
associateName += string.Format(" {0}", groupMember.GivenName);
// if the middle name is present...
if (groupMember.MiddleName != string.Empty)
{
// append it to the string...
associateName += string.Format(" {0}", groupMember.MiddleName);
}
// get the employee ID...
string associateNumber = p.SamAccountName;
// if associate already added...
if (listContents.ContainsKey(associateName))
{
// skip rest of code for this iteration...
continue;
}
// add to list that will populate dropdown...
listContents.Add(associateName, mailAddress);
// add to lookup collection of ccmail to userID
userIdLookup.Add(mailAddress, associateNumber);
// add associate name to list...
emailLookup.Add(associateNumber, mailAddress);
}
}