2013-06-24 2 views
2

값으로 사전을 정렬 할 수 있습니까 (내림차순)? 값이 키순으로 정렬되는 경우 (오름차순)?키 AND 값으로 사전 (또는 비슷한 컬렉션)을 주문하는 방법?

예 :

가 정렬되지 :
(키 값)
C 8
B, 8
A, 5
D 11
F 8

정렬 :
을 (키, 값)
D, 11
B, 8
C, 8
F, 8
A,

이 예제에서 키 B, C, D는 동일한 값을 갖습니다. 값으로 사전을 정렬하면이 키는 오름차순이되지 않습니다. 어떻게해야합니까? 사전 이외의 다른 것을 사용해야합니까?

var orderedKeyValuePairs = 
    myDic.OrderByDescending(kv => kv.Value).ThenBy(kv => kv.Key); 
이 에게

귀찮게하지 마십시오 : 당신이 Dictionary<TKey,TValue>을 열거 할 때

답변

1

, 당신은 당신이 (정렬되지 않은) 순서를 통해 Linq에 사용할 수 있도록 특별히 Dictionary<TKey,TValue>,IEnumerable<KeyValuePair<TKey,TValue>>입니다 ... KeyValuePair<TKey,TValue>의 무리를 돌아 정렬 된 값을 사전으로 사전에 다시 저장하면 암시 적 정렬 순서가 없습니다.

+0

이 순서쌍을 여러 번 액세스하려면 끝에 .ToList()를 넣어야합니다. :) – tsells

1

Dictionary<T,U>은 내부적으로 순서가 지정되지 않습니다. 그러나 다음과 같이 LINQ를 통해 특정 순서로 값을 가져올 수 있습니다.

관련 문제