2013-09-05 4 views
19

나는 사전vb.net에서 Dictionary를 어떻게 반복 할 수 있습니까?

Dim ImageCollection As New Dictionary(Of ConvensionImages, Integer) 

을 만들고 난

For Each dr As DataRow In dt.Rows 
      Dim obj As New ConvensionImages 
      obj.ImageID = dr("ID") 
      obj.Name = dr("Name") 
      obj.Description = dr("Description") 
      obj.CategoryID = dr("CategoryID") 
      obj.CategoryName = dr("CategoryName") 
      obj.CategoryDescription = dr("CatDescription") 
      obj.EventID = dr("EventID") 
      obj.Image = dr("img") 
      obj.DownloadImage = dr("DownLoadImg") 
      ImageCollection.Add(obj, key) 
      key = key + 1 

지금 내가이

답변

43

이 사전에 대한 키로 Integer을 확인 할 수있는 방법 ImageID를 검색하려면 해당 키 입력 :

Dim ImageCollection As New Dictionary(Of Integer, ConvensionImages) 

변경 ImageCollection.Add(obj, key)ImageCollection.Add(key, obj)

에 그리고이 루프 사용

For Each kvp As KeyValuePair(Of Integer, ConvensionImages) In ImageCollection 
    Dim v1 As Integer = kvp.Key 
    Dim v2 As ConvensionImages = kvp.Value 
    'Do whatever you want with v2: 
    'If v2.ImageID = .... Then 
Next 
+1

루프에서 KeyValuePair의 정의를'(Of Integer, ConvensionImages) '로 변경해야합니다. – Heslacher

+0

@Heslacher 당신의 권리입니다, 감사합니다. –

13

을 당신이 너무 루프이 방법을 수행 할 수 있습니다

For Each iKey As Integer In ImageCollection.Keys 
    Dim value As ConvensionImages = ImageCollection(iKey) 
    '... 
Next 

그것은 매우 빠르고 간단한 방법입니다.

+0

너무 빠르지 않을 수도 있습니다. 루프 내에서 모든 반복에 대해 사전에서 키를 검색합니다. 'ImageCollection의 각 쌍에 대해'와 같은 것을 사용하고 루프 내에서 'pair.Value'를 사용해야합니다 –

관련 문제