VB.net,如何按值对集合项进行排序

时间:2013-06-04 16:47:53

标签: vb.net visual-studio-2010 sorting

如何在VB.NET中按值对集合项进行排序?

我想对此进行排序:

Dim col as Collection = New Collection
col.Add("b","b1")
col.Add("a","a1")
col.Add("d","d1")

3 个答案:

答案 0 :(得分:2)

就像@Krishnadditya所提到的那样,集合并不适合排序,因为它们包含Object类型的项目,这些项目过于通用而无法相互比较。如果你没有与一个集合结婚,你可以使用LINQ查询到列表或任何可以强制枚举的内容

Dim list = {
        New With {.Object = "b", .Key = "b1"},
        New With {.Object = "a", .Key = "a1"},
        New With {.Object = "d", .Key = "d1"}}

Dim sortedList = _
        From item In list
        Order By item.Key

答案 1 :(得分:0)

由于Collection.Add采用一般对象类型而没有特定类型 - 无法进行排序。由于对象需要相互比较才能进行排序,这就像比较橙子和苹果一样。

并且Collection提供按键排序而不是值。

我认为,您可能需要扩展Collection类并实现排序。您可以使用InsertRemoveAt方法移动项目。

只是一个想法/建议: 如果值是特定类型,那么如何使用其他数据结构。就像您可以按照link

中提到的那样按值排序的字典

答案 2 :(得分:0)

我决定使用字典:

Dim newcol = (From entry In col 
              Order By entry.Value Descending).ToDictionary(
              Function(pair) pair.Key, 
              Function(pair) pair.Value)