2012-10-04 4 views
1

을 던지고 자사의 기능,C#을 - 값의 키를 정렬 할 때 사전 <INT, 사전 <int, string>은> 정렬 내가 정렬되지 않은 <code>Dictionary<int, Dictionary<int, string>></code>이 System.ArgumentException

private static Dictionary<int, Dictionary<int, string>> SortDictionary(Dictionary<int, Dictionary<int, string>> unSortedDict) 
{ 
     var sortedDict = (unSortedDict.OrderBy(entry => entry.Value.Keys)).ToDictionary(pair => pair.Key, pair => pair.Value); 

     return sortedDict; 
} 

나는 부착하고는 다음 System.ArgumentException: At least one object must implement IComparable.입니다 던지는 당신은 기분이 언짢아 내가 뭔가 잘못하고있는 중이 야, 난 달성하기 위해 노력하고 어떤 생각을 가지고 내가 당신의지도가 필요하므로 정렬되지 않은 키를 볼 수있는 아래의 데이터 스크린 샷, 감사

enter image description here

+2

그 스크린 샷의 텍스트를 읽으려면 더 좋은 안경이 필요합니다 ... –

답변

4

사전은 원래 의도적으로 정렬되지 않았습니다. 사전 값을 정렬 한 다음 다시 사전으로 변환하면 정렬되지 않은 콜렉션으로 다시 끝납니다.

OrderByKeyCollection (소급 유형이 아님)으로 전화하려고 했으므로 오류가 발생했습니다.

다른 컬렉션 (예 : SortedDictionary<T,U>)을 고려해 볼 수 있습니다. 그러나 정렬을 유지하기 위해 사용자 정의 비교자를 작성해야합니다.

+0

그러나 사용자의 요구에 맞는'SortedDictionary'가 있습니다. – Servy

관련 문제