我有一个问题,我找不到解决方案:(
我有一个从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;
}
塔拉索夫
答案 0 :(得分:1)
如果您只是在一个用户之后,那么更新您的GetUser
方法以返回单个用户实例而不是列表:
public Benutzer GetUser(...)
{
....
return new Benutzer(...);
}
如果您无法控制GetUser
方法,只想从返回的列表中提取用户,请致电:
srv.GetUser(Domain, null, null, UserID).FirstOrDefault();
答案 1 :(得分: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;
}