2016-07-13 6 views
0

Ich versuche, eine sortierte SearchResultCollection Objekt basierend auf Abteilung und dann nach Namen (beide alphabetisch) zu bekommen. Ich versuche, zwei Eigenschaften zu laden, aber das nimmt nur die letzte angegebene Eigenschaft und sortiert sie basierend darauf.Sortieren auf VerzeichnisSearcher basierend auf zwei Eigenschaften in C#

Mein aktueller Code ist folgende:

DirectoryEntry entry = new DirectoryEntry(ConfigurationManager.AppSettings["LDAP"]); 
DirectorySearcher search = new DirectorySearcher(entry) 
{ 
    SearchScope = SearchScope.Subtree, 
    Filter = "(&(objectClass=user)(physicalDeliveryOfficeName=Dartmouth))" 
}; 
search.PropertiesToLoad.Add("name"); 
search.PropertiesToLoad.Add("phone"); 
search.PropertiesToLoad.Add("email"); 
search.PropertiesToLoad.Add("department"); 

search.Sort.Direction = System.DirectoryServices.SortDirection.Ascending; 
search.Sort.PropertyName = "department"; 
search.Sort.PropertyName = "name"; 

SearchResultCollection result = search.FindAll(); 

Aber auch dies nur Sorten mit Namen. Ich brauche alle Benutzer nach Abteilung gruppiert und von dort nach Namen sortiert.

Antwort

0

Guss die SearchResultCollection auf ein IEnumerable und dann sortieren mit einem benutzerdefinierten IComparer, die Sie

var results = search.FindAll().Cast<SearchResult>() 
           .Sort(/*your IComparer<SearchResult>*/); 

sortieren die Ergebnisse auf Client-Seite entwickeln, weil Serverseite Sorten in AD sind ressourcenintensiv.

Außerdem - wenn Sie AD 2000 es Suche unterstützt nicht auf mehr als ein Attribut

+0

So wie eine Frage, hat 2008 AD supprt Suche auf mehr als ein Attribut? –

+0

@ JonathanPrall - am ... Ich weiß es nicht wirklich, aber ich würde die Sortierung auf dem AD-Server vermeiden - besser "verschwenden" Sie die Rechenleistung auf Ihrer Seite, die wahrscheinlich weniger beschäftigt ist. –

+0

@ JonathanPrall - BTW - hat die Antwort Ihr Problem gelöst? –

Verwandte Themen