C# 搜索结果问题

C# 搜索结果问题,c#,foreach,active-directory,C#,Foreach,Active Directory,我使用的是C#MVC5。我已经与active directory建立了连接,我正试图通过一个html表单在广告中循环查找用户的详细信息。这篇文章的结果不是预期的。我得到了正确数量的搜索结果,但输出的结果是相同的。如下图所示: 总共2个结果是正确的,但是还有一个Josh Barber,而不仅仅是Josh VanDyke。 代码如下: /**********Establish Connection********/ DirectoryEntry di

我使用的是C#MVC5。我已经与active directory建立了连接,我正试图通过一个html表单在广告中循环查找用户的详细信息。这篇文章的结果不是预期的。我得到了正确数量的搜索结果,但输出的结果是相同的。如下图所示:

总共2个结果是正确的,但是还有一个Josh Barber,而不仅仅是Josh VanDyke。 代码如下:

            /**********Establish Connection********/
            DirectoryEntry dir = createDirectoryEntry();
            DirectorySearcher search = new DirectorySearcher(dir);

            /****Refer to class constructor****/
            ADUser userAttributes = new ADUser("", "", "", "", "", "", "");

            /********Create the List to store results in***************/
            List<ADUser> Users = new List<ADUser>();
            string DisplayName = "", SAMAccountName = "", Mail = "", Description = "", Division = "", TelephoneNumber = "", FacsimileTelephoneNumber = "";

            /*******Filter parameters************/
            search.Filter = "(&((&(objectCategory=Person)(objectClass=User)))(anr=" + userName + "* ))";
            SearchResultCollection searchresult = search.FindAll();
            search.PropertiesToLoad.Add("displayname");
            search.PropertiesToLoad.Add("SAMAccountName");
            search.PropertiesToLoad.Add("Mail");
            search.PropertiesToLoad.Add("Description");
            search.PropertiesToLoad.Add("TelephoneNumber");
            search.PropertiesToLoad.Add("FacsimileTelephoneNumber");
            search.PropertiesToLoad.Add("Division");

             /*****************Filtering and populating the List****************/    

            if (searchresult != null)
            {
                foreach (SearchResult iResult in searchresult)
                {
                    foreach (string PropertyName in iResult.Properties.PropertyNames)
                    {
                        foreach (Object key in iResult.GetDirectoryEntry().Properties[PropertyName])
                        {
                            try
                            {
                                switch (PropertyName.ToUpper())
                                {
                                    case "DISPLAYNAME":
                                        DisplayName = key.ToString();
                                        userAttributes.Name = DisplayName;
                                        break;

                                    case "SAMACCOUNTNAME":
                                        SAMAccountName = key.ToString();
                                        userAttributes.DomainUserName = SAMAccountName;
                                        break;

                                    case "MAIL":
                                        Mail = key.ToString();
                                        userAttributes.EmailAddress = Mail;
                                        break;

                                    case "DESCRIPTION":
                                        Description = key.ToString();
                                        userAttributes.JobDescription = Description;
                                        break;

                                    case "TELEPHONENUMBER":
                                        TelephoneNumber = key.ToString();
                                        userAttributes.TelephoneNumber = TelephoneNumber;
                                        break;

                                    case "FACSIMILETELEPHONENUMBER":
                                        FacsimileTelephoneNumber = key.ToString();
                                        userAttributes.FaxNumber = FacsimileTelephoneNumber;
                                        break;

                                    case "DIVISION":
                                        Division = key.ToString();
                                        userAttributes.Division = Division;
                                        break;
                                }
                            }
                            catch { }
                        }
                    }

                    Users.Add(userAttributes);
                }

                return View(Users);
            }

            return View();
        }
/*******建立连接********/
DirectoryEntry dir=createDirectoryEntry();
DirectorySearcher search=新的DirectorySearcher(dir);
/****请参阅类构造函数****/
ADUser userAttributes=新的ADUser(“,”,“,”,“,”,“,”,”);
/********创建用于存储结果的列表***************/
列表用户=新列表();
字符串DisplayName=“”,SAMAccountName=“”,Mail=“”,Description=“”,Division=“”,TelephoneNumber=“”,FacsimileTelephoneNumber=“”;
/*******滤波器参数************/
search.Filter=“(&(&(&(objectCategory=Person)(objectClass=User))(anr=“+userName+”*)”;
SearchResultCollection searchresult=search.FindAll();
search.PropertiesToLoad.Add(“displayname”);
search.PropertiesToLoad.Add(“SAMAccountName”);
search.PropertiesToLoad.Add(“邮件”);
search.PropertiesToLoad.Add(“说明”);
search.PropertiesToLoad.Add(“电话号码”);
search.PropertiesToLoad.Add(“FacsimileTelephoneNumber”);
search.PropertiesToLoad.Add(“分割”);
/*****************筛选和填充列表***************/
if(searchresult!=null)
{
foreach(SearchResult中的SearchResult iResult)
{
foreach(iResult.Properties.PropertyNames中的字符串PropertyName)
{
foreach(iResult.GetDirectoryEntry().Properties[PropertyName]中的对象键)
{
尝试
{
开关(PropertyName.ToUpper())
{
案例“DISPLAYNAME”:
DisplayName=key.ToString();
userAttributes.Name=DisplayName;
打破
案例“SAMACCOUNTNAME”:
SAMAccountName=key.ToString();
userAttributes.DomainUserName=SAMAccountName;
打破
案例“邮件”:
Mail=key.ToString();
userAttributes.EmailAddress=邮件;
打破
案例“说明”:
Description=key.ToString();
userAttributes.JobDescription=描述;
打破
案例“电话号码”:
电话号码=key.ToString();
userAttributes.TelephoneNumber=电话号码;
打破
案例“FACSIMILETELEPHONENUMBER”:
FacsimileTelephoneNumber=key.ToString();
userAttributes.FaxNumber=FacsimileTelephoneNumber;
打破
“分部”案:
除法=key.ToString();
userAttributes.Division=Division;
打破
}
}
捕获{}
}
}
添加(userAttributes);
}
返回视图(用户);
}
返回视图();
}

您不会重新创建或清理
用户属性

   // not here
   /****Refer to class constructor****/
   // ADUser userAttributes = new ADUser("", "", "", "", "", "", "");
    ...

         foreach (SearchResult iResult in searchresult)
         {
             // but here.
             ADUser userAttributes = new ADUser("", "", "", "", "", "", "");

             foreach (string PropertyName in iResult.Properties.PropertyNames)
             {