2012-12-13 5 views
1

사전을 DropDownList에 바인딩하고 싶습니다. 그러나 바인딩하기 전에 키순 또는 값순으로 사전 순으로 정렬하고 싶습니다.ASP.NET 사전 정렬

어떻게 구할 수 있습니까? 어떤 종류의 빌드에 일종의 함수 또는 트릭이 있습니까? 사전에

 Dim Dic1 As New Dictionary(Of String, String) 

     Dic1.Add("1", "pear") 
     Dic1.Add("2", "apple") 
     Dic1.Add("3", "juice") 
     Dic1.Add("4", "milk") 
     Dic1.Add("5", "cornflakes") 

    drpProduct.DataSource = Dic1 
    drpProduct.DataTextField = "Value" 
    drpProduct.DataValueField = "Key" 
    drpProduct.DataBind() 

감사합니다, 감사합니다 :

여기 내 코드입니다.

+0

데이터베이스에서 데이터를 가져 오는 경우 읽을 때 정렬 할 수 있습니다. –

답변

0

당신은 Linq에 사용할 수 있습니다 : Order By kv.Key

drpProduct.DataSource = From kv In Dic1 Order By kv.Value 
drpProduct.DataTextField = "Value" 
drpProduct.DataValueField = "Key" 
drpProduct.DataBind() 

변경 Order By kv.Value를 대신 키로 주문합니다.

Adi가 이미 언급했듯이 처음부터 SortedDictionary을 사용하는 것이 좋습니다.

+0

Thaaaanks - 그렇게 멋지고 쉽게 :-) - 가능하다면 SQL에서 데이터베이스 레코드를 정렬 할 것입니다. – micknt

3

직접 분류 할 수도 있지만 가장 좋은 방법은 SortedDictionary을 사용하는 것입니다.

+0

답변 해 주셔서 감사합니다! – micknt

1

이 (키, C#을 문법에 알파벳 순으로 정렬하는 예를 들어)에 의해 LINQ 달성 할 수 있습니다

drpProduct.DataSource = Dic1.OrderBy(kvp => kvp.Key); 

(... = Dic1.OrderBy(Function(kvp) kvp.Key) 같은 VB.Net, 일)

이 본질적으로 적용하지 않습니다 사전의 주문이지만 드롭 다운에 바인딩 할 때 특별히 주문을 제공합니다.

+0

답변 해 주셔서 감사합니다! – micknt

+0

.OrderByDescending()도 사용할 수 있습니다. –