2016-07-13 30 views
0

部門に基づいてソートされたSearchResultCollectionオブジェクトを取得しようとしています。私は2つのプロパティを読み込もうとしていますが、これは最後に指定されたプロパティを取り、それに基づいてソートします。Cの2つのプロパティに基づいてdirectorySearcherをソートする

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(); 

しかし名前で再び、この唯一の種類:

私の現在のコードは次のようです。私はすべてのユーザーを部門別にグループ化し、そこから名前で分類する必要があります。

答えて

0

キャストSearchResultCollectionIEnumerableにして、ソートのカスタムIComparerとADでサーバー側のソートがリソースを大量に消費しているので、あなたが

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

ソートにクライアント側での結果を開発しています。また

- あなたはAD 2000を持っている場合、それはただ、質問と複数の属性

+0

での検索をサポートしていないが、複数の属性のAD 2008 supprt検索していますか? –

+0

@JonathanPrall - am ...私は本当に知っているわけではありませんが、私はADサーバーでの並べ替えを避けるでしょう。 –

+0

@JonathanPrall - BTW - 答えがあなたの問題を解決しましたか? –

関連する問題