2012-07-26 68 views
0

我有一個問題,它:(我如何獲得一個名單的唯一一個用戶

我有一個從Active Directory中獲取數據ASP.NEt應用我沒有找到解決辦法。我建一個3層應用程序我有一個模型項目,有一個用戶類(「Benutzer.cs」)和一個數據層和服務層 在我的數據層我得到有關AD用戶的信息。一個用戶,我的問題是如何,我可以過濾列表中的一個用戶也許一個愚蠢的問題,但我不知道我必須做的:d

我的代碼:

... 

        IUserService srv = new UserService(); 
        List<Model.Benutzer> usr = srv.GetUser(Domain, null, null, UserID); 

         // I want the one User of this List can I found this User about 
         // Benutzer User = usr.? 

        ... 

我只想要一個用戶。這是我的getUser方法的代碼:

public List<Benutzer> GetUser(string Domain, string Benutzer, string Werk, string GUID) 
     { 
      List<Benutzer> result = new List<Benutzer>(); 

       DirectoryEntry Entry = new DirectoryEntry("LDAP://<GUID=" + GUID + ">"); 

       string filter = "(&(objectClass=user)(objectCategory=person)(cn=*))"; 

       DirectorySearcher Searcher = new DirectorySearcher(Entry, filter); 

        SearchResult res = Searcher.FindOne(); 

        result.Add(new Benutzer() 
        { 
         Benutzername = GetProperty(res, "sAMAccountName"), 
         Vorname = GetProperty(res, "givenName"), 
         Nachname = GetProperty(res, "sn"), 
         eMail = GetProperty(res, "mail"), 
         Unternehmen = GetProperty(res, "company"), 
         Abteilung = GetProperty(res, "Department"), 
         Raum = GetProperty(res, "physicalDeliveryOfficeName"), 
         Beschreibung = GetProperty(res, "Description"), 
         Kostenstelle = GetProperty(res, "extensionAttribute3"), 
         Telefonnummer = GetProperty(res, "telephoneNumber"), 
         Mobilnummer = GetProperty(res, "mobile"), 
         Haustelefon = GetProperty(res, "homePhone"), 
         Fax = GetProperty(res, "facsimileTelephoneNumber"), 
         Pager = GetProperty(res, "pager"), 
         Standort = GetProperty(res, "l") 
        }); 

      return result; 
     } 

塔拉索夫

+1

爲什麼你做,並返回一個'名單<>'來首先? – 2012-07-26 13:51:40

+0

我需要ListView List,但我在每行ListView中都有一個Button,如果點擊Button,我將Webform更改爲有關User的主要信息。 – Tarasov 2012-07-27 05:53:56

+0

但我現在有解決方案:P – Tarasov 2012-07-27 06:10:27

回答

1

你的代碼應該只返回列表中的一個用戶。 DirectorySearcher.FindOne只返回找到的第一個條目。

如果你想在一個列表中未歸還,使返回值Benutzer然後結果應該是類型Benutzer的還有:

public Benutzer GetUser(string Domain, string Benutzer, string Werk, string GUID) 
{ 
    Benutzer result = new Benutzer(); 
    DirectoryEntry Entry = new DirectoryEntry("LDAP://<GUID=" + GUID + ">"); 
    string filter = "(&(objectClass=user)(objectCategory=person)(cn=*))"; 

    DirectorySearcher Searcher = new DirectorySearcher(Entry, filter); 
    SearchResult res = Searcher.FindOne(); 
    result =new Benutzer() 
    { 
     Benutzername = GetProperty(res, "sAMAccountName"), 
     Vorname = GetProperty(res, "givenName"), 
     Nachname = GetProperty(res, "sn"), 
     eMail = GetProperty(res, "mail"), 
     Unternehmen = GetProperty(res, "company"), 
     Abteilung = GetProperty(res, "Department"), 
     Raum = GetProperty(res, "physicalDeliveryOfficeName"), 
     Beschreibung = GetProperty(res, "Description"), 
     Kostenstelle = GetProperty(res, "extensionAttribute3"), 
     Telefonnummer = GetProperty(res, "telephoneNumber"), 
     Mobilnummer = GetProperty(res, "mobile"), 
     Haustelefon = GetProperty(res, "homePhone"), 
     Fax = GetProperty(res, "facsimileTelephoneNumber"), 
     Pager = GetProperty(res, "pager"), 
     Standort = GetProperty(res, "l") 
    };    

    return result; 
} 
+0

謝謝! :)它的工作原理...我以爲我可以從列表中獲得一個用戶,但這種方式更好 – Tarasov 2012-07-27 06:09:51

+1

@Tarasov你*可以*從列表中獲取用戶(請參閱我的答案),但是,如果您的方法將/應該只返回一個用戶,那麼返回列表沒有意義。 – James 2012-07-27 08:12:43

+0

是............ – Tarasov 2012-07-27 17:16:35

1

如果你看上一個用戶,然後更新您的GetUser方法返回一個用戶實例,而不是一個列表:

public Benutzer GetUser(...) 
{ 
    .... 
    return new Benutzer(...); 
} 

如果您無法控制GetUser方法,只想從返回的列表中提取用戶,請致電:

srv.GetUser(Domain, null, null, UserID).FirstOrDefault(); 
相關問題