2013-09-05 8 views
19

Ben bir sözlükSözlük'te etc.net'de nasıl yineleyebilirsiniz?

Dim ImageCollection As New Dictionary(Of ConvensionImages, Integer) 

oluşturmak ve ben

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 

şimdi ben bu

cevap

43

sizin Sözlük için anahtar olarak Integer olun nasıl yapabilirim ImageID aramak istediğiniz ve anahtar olduğunu doldurun:

Dim ImageCollection As New Dictionary(Of Integer, ConvensionImages) 

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

Ve bu döngü kullanın:

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

Döngüdeki KeyValuePair öğesinin tanımını '(Of Integer, ConvensionImages)' – Heslacher

+0

@ Heslacher olarak değiştirmelisiniz, teşekkürler –

13

Sen de döngü bu şekilde, can:

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

Kendisine çok hızlı ve basit bir yoludur.

+0

Çok hızlı olmayabilir. Döngünün içinde her yinelemede sözlükte anahtar aranıyor. ImageCollection'daki her bir çift için 'gibi bir şey kullanmalı ve döngü içindeki' pair.Value' kullanmalısınız. –

İlgili konular