按值排序VB字典,然后循环遍历有序值

时间:2013-01-06 23:08:32

标签: vb.net dictionary visual-studio-2012

我有一个字典(字符串,整数)。我需要先按整数排序字典,然后在循环中使用每个整数值。 例如,字典包含cat 2,dog 1,rat 3 ... ordered将是dog 1,cat 2,rat 3.然后我会得到第一个值,1,用它执行一些函数,得到下一个值2 ,用它执行一些功能,依此类推,直到字典结束。

到目前为止,我有:

Dim ordered = newdictionary.OrderBy(Function(x) x.Value)
   ordered.Select(Function(x) x.Value)

实现这一目标的好方法是什么?

1 个答案:

答案 0 :(得分:2)

这似乎是你真正想要的:

For Each value In newdictionary.Values.OrderBy(Function(i) i)
    ' do something with the value '
Next

现在您正在循环字典的有序int

Dictionary<TKey, TValue>.Values Property

根据您的评论

编辑您想要包含索引以检查下一个元素是否等于当前:

Dim values = newdictionary.Values.
    Select(Function(i, index) New With {.Num = i, .Index = index}).
    OrderBy(Function(x) x.Num)
For Each value In values
    Dim nextElement = values.ElementAtOrDefault(value.Index + 1)
    If nextElement Is Nothing OrElse nextElement.Num <> value.Num Then
        ' next value is different or last element
    Else
        ' next number same 
    End If
Next