Filter LDAP mit mehreren Kriterien auf ein Feld
Hallo,
ich würde gerne für den LDAP eine suche in C# bauen <- soll eine "einfache" suche für den internen Adressstamm sein.
vom Prinzip funktioniert das auch (wie oben im Code), jetzt gibt es aber den Norbert 50 mal im Unternehmen und sein Nachname Li ist auch keine Hilfe <- weil wenn ich jetzt nach Li suche, finde ich alle "Lisas" <- okay ich könnte 2 Felder machen und trennen zwischen Vorname und Nachname und dann eben beide Felder befüllen, aber irgendwie soll die Usability natürlich nicht leiden...
im Feld Name steht also "Li, Norbert"
wenn ich jetzt nach "Norbert Li" suche, finde ich also nichts, ebenso "Li Norbert" findet nichts, da dass Komma noch im weg ist, also muss ich Programmtechnisch das Feld Name sowohl nach Begriff 1 ALSAUCH nach Begriff 2 Filtern,...
wie kann ich das machen?
qbeUser.Name = name;
qbeUser.Name = name[1];
<- überschreibt der 2. Begriff den 1.
Vielen Dank
ich würde gerne für den LDAP eine suche in C# bauen <- soll eine "einfache" suche für den internen Adressstamm sein.
using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
{
string name = "*Norbert*";
UserPrincipal qbeUser = new UserPrincipal(context);
qbeUser.Name = name;
vom Prinzip funktioniert das auch (wie oben im Code), jetzt gibt es aber den Norbert 50 mal im Unternehmen und sein Nachname Li ist auch keine Hilfe <- weil wenn ich jetzt nach Li suche, finde ich alle "Lisas" <- okay ich könnte 2 Felder machen und trennen zwischen Vorname und Nachname und dann eben beide Felder befüllen, aber irgendwie soll die Usability natürlich nicht leiden...
im Feld Name steht also "Li, Norbert"
wenn ich jetzt nach "Norbert Li" suche, finde ich also nichts, ebenso "Li Norbert" findet nichts, da dass Komma noch im weg ist, also muss ich Programmtechnisch das Feld Name sowohl nach Begriff 1 ALSAUCH nach Begriff 2 Filtern,...
wie kann ich das machen?
qbeUser.Name = name;
qbeUser.Name = name[1];
<- überschreibt der 2. Begriff den 1.
Vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 364726
Url: https://administrator.de/contentid/364726
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
5 Kommentare
Neuester Kommentar
Machs mit einem DirectorySearcher und einer LDAP Query da kannst du nach Belieben mit "und" oder "or" Verknüpfen
Zur LDAP Query Syntax siehe
https://technet.microsoft.com/de-de/library/aa996205(v=exchg.65).aspx
DirectoryEntry rootEntry = new DirectoryEntry("LDAP://some.ldap.server.com");
rootEntry.AuthenticationType = AuthenticationTypes.None; //Or whatever it need be
DirectorySearcher searcher = new DirectorySearcher(rootEntry);
searcher.Filter = "(&(objectClass=user)(objectCategory=person)(cn=*some_user_name*)(cn=*otherpart*))";
foreach(SearchResult result in searcher.FindAll())
{
Console.WriteLine("account name: {0}", result.Properties["samaccountname"].Count > 0 ? result.Properties["samaccountname"] : string.Empty);
Console.WriteLine("common name: {0}", result.Properties["cn"].Count > 0 ? result.Properties["cn"] : string.Empty);
}
https://technet.microsoft.com/de-de/library/aa996205(v=exchg.65).aspx
Dir fehlt die abschließende Klammer im Filter!
Deswegen hatte ich dir ja die Syntax verlinkt, das du dir da zumindest die Basics aneignest oder müssen wir hier jetzt wieder Kindergarten spielen?
Deswegen hatte ich dir ja die Syntax verlinkt, das du dir da zumindest die Basics aneignest oder müssen wir hier jetzt wieder Kindergarten spielen?
Ganz einfach, steht wie alles in der Doku, den Konstruktor ohne Parameter nutzen
https://msdn.microsoft.com/de-de/library/h9zyssd8(v=vs.110).aspx
https://msdn.microsoft.com/de-de/library/system.directoryservices.direct ...
https://msdn.microsoft.com/de-de/library/h9zyssd8(v=vs.110).aspx
https://msdn.microsoft.com/de-de/library/system.directoryservices.direct ...