3

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

我想对此进行排序:

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

3 回答 3

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
于 2013-06-04T18:08:41.243 回答
0

我决定使用字典:

Dim newcol = (From entry In col 
              Order By entry.Value Descending).ToDictionary(
              Function(pair) pair.Key, 
              Function(pair) pair.Value)
于 2013-06-04T18:21:26.843 回答
0

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

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

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

只是一个想法/建议:如果值是特定类型的,如何使用其他数据结构。就像您可以按此链接中提到的值排序的字典

于 2013-06-04T17:15:40.387 回答