/// <summary> /// Liest das AD aus und gibt eine Liste mit allen Gruppen zurück /// </summary> /// <returns></returns> private Task GetAllADGroups() { return(Task.Factory.StartNew(() => { // create your domain context PrincipalContext ctx = new PrincipalContext(ContextType.Domain); GroupPrincipal qbeGrp = new GroupPrincipal(ctx); // Erstellt den Eintrag der während des Ladens angezeigt wird GroupPrincipal loading = new GroupPrincipal(ctx) { Name = "loading ..." }; // Fügt die Lade Gruppe der Liste hinzu die angezeigt wird GroupsFiltered = new ObservableCollection <GroupPrincipal> { loading }; // create your principal searcher passing in the QBE principal PrincipalSearcher srch = new PrincipalSearcher(qbeGrp); List <GroupPrincipal> lst = new List <GroupPrincipal>(); // find all matches foreach (var found in srch.FindAll()) { if (found is GroupPrincipal grp) { AllGroups.Add(grp); } } // Sortiert die Liste mit alles Gruppen AllGroups.Sort((x, y) => x.Name.CompareTo(y.Name)); // Kopiert zum Start alle Gruppen in die gefilterte Liste GroupsFiltered = new ObservableCollection <GroupPrincipal>(AllGroups); })); }