2011-10-19 5 views
5

키 기반의 사전을 VB.net에서 주문해야합니다. 키와 값은 모두 문자열입니다. 사전에는 .Sort()이 없습니다. 내 자신의 정렬 알고리즘을 작성하지 않고이 작업을 수행 할 수있는 방법이 있습니까?키 기반 사전 정렬

+0

"사전에 주문 하시겠습니까?"는 어떤 의미입니까? – jason

+0

명확하게하기 위해 수정했지만 편집되었습니다. 열쇠를 기반으로 사전을 주문해야합니다. – user489041

+0

아니요, 아직도 "사전을 주문하십시오"라는 말을하지 않은 것입니다. 열쇠를 기반으로하고 싶다고 말하는 것은 "사전을 주문하는 것"이 ​​무엇을 의미하는지 설명하지 못합니다. – jason

답변

1

정확히 vb.net 작업이 코드 : 당신이 SortedDictionary를 사용하는 기본 사전을 유지하지해야하는 경우

 Dim myDict As New Dictionary(Of String, String) 
     myDict.Add("one", 1) 
     myDict.Add("four", 4) 
     myDict.Add("two", 2) 
     myDict.Add("three", 3) 

     Dim sortedDict = (From entry In myDict Order By entry.Value Ascending).ToDictionary(Function(pair) pair.Key, Function(pair) pair.Value) 

     For Each entry As KeyValuePair(Of String, String) In sortedDict 
      Console.WriteLine(String.Format("{0,10} {1,10}", entry.Key, entry.Value)) 
     Next 
+0

OP의 편집 내용에 따라 '주문 별 주문. 열쇠'가 아닌 '항목. 값'으로 생각합니다. –

+0

entry.Key에 대해 LINQ 표현식없이 SortedDictionary를 사용할 수 있습니다. – apros

2

, 당신은 당신이 필요로하는 무엇을 적 기준 떨어져 따라 IEnumerable을 반환하는 LINQ를 사용할 수 있습니다 :

Dim sorted = From item In items 
      Order By item.Key 
      Select item.Value 

SortedDictionary 아마 그러나만큼 당신이 미래의 어떤 시점에서 일종의 반전이 필요하지 않았다로 반복 사용에서 더 높은 성능을 제공한다.