c # LDAP Заполнение списка деталями из запроса LDAP

Я создаю приложение, в котором мне нужно создать список для каждого экземпляра совпадений в запросе LDAP.

Это должно работать так ... если пользователь ищет sn (фамилию) «Смит», то данные всех людей с фамилией «Смит» будут внесены в список.

Затем я могу использовать этот список для создания сведений о поле выбора, из которого пользователь может выбирать, и впоследствии он будет сохранен в любой форме, которую он использовал.

Я пытаюсь сделать это повторно используемым во многих приложениях в моем решении, поэтому поле поиска и значения для поиска передаются этому действию (скорее всего, будут иметь суффикс с подстановочным знаком), а затем список будет заполнен. Страница, которая называется этим действием, может сохранять любые данные, которые им требуются от поиска LDAP, будь то имя или cn, что бы ни потребовалось.

Мне не кажется, что мой код выглядит правильно, я предполагаю, что это было бы похоже на функцию в JS, но Visual Studio выделяет части моего кода как неправильные.

Вот мой код (я поставил комментарии рядом с частями, которые Visual Studio выделила как неправильные)

using System.Collections.Generic;
using System.DirectoryServices;

namespace solutionName.Apps.Models
{
    public class LDAP
    {
        protected void LDAP_Search(string LDAP_Field, string LDAP_Value)
        {
            string _ldapserver = "myLDAPServer";
            string _port = "123";
            string _username = "myUserName";
            string _password = "myPassword";
            _ldapserver = "LDAP://" + _ldapserver + ":" + _port;
            DirectoryEntry entry = new DirectoryEntry(_ldapserver, _username, _password);
            entry.AuthenticationType = AuthenticationTypes.None;
            DirectorySearcher deSearch = new DirectorySearcher(entry);
            deSearch.PropertiesToLoad.Add("fullname");
            deSearch.PropertiesToLoad.Add("givenName");
            deSearch.PropertiesToLoad.Add("sn");
            deSearch.PropertiesToLoad.Add("PersonOUC");
            deSearch.PropertiesToLoad.Add("mail");
            deSearch.PropertiesToLoad.Add("cn");
            deSearch.Filter = "(&(" + LDAP_Field + "=" + LDAP_Value + "))";
            var LDAPResponses = new List<LDAP_Search_Model>
            { // this line is highlighted as incorrect
                foreach (SearchResult sresult in deSearch.FindAll())
                {
                    new LDAP_Search_Model
                    {
                        fName = sresult.Properties["givenName"][0].ToString(),
                        sName = sresult.Properties["sn"][0].ToString(),
                        fullName = sresult.Properties["fullname"][0].ToString(),
                        OUC = sresult.Properties["PersonOUC"][0].ToString(),
                        email = sresult.Properties["mail"][0].ToString(),
                        UIN = sresult.Properties["cn"][0].ToString()
                    };
                }
            }; // this line is also highlighted as incorrect

        }
    }

    public class LDAP_Search_Model
    {
        public string UIN { get; set; }
        public string fName { get; set; }
        public string sName { get; set; }
        public string fullName { get; set; }
        public string OUC { get; set; }
        public string email { get; set; }
    }


}

person elboffor    schedule 14.11.2016    source источник


Ответы (1)


Следующие коды могут решить проблему.

var LDAPResponses = new List<LDAP_Search_Model>();
foreach (SearchResult sresult in deSearch.FindAll())
{
   LDAPResponses.Add(new LDAP_Search_Model
   {
       //...
   });
};
person KarateJB    schedule 15.11.2016