如何在 VB.NET 中按值对集合项进行排序?
我想对此进行排序:
Dim col as Collection = New Collection
col.Add("b","b1")
col.Add("a","a1")
col.Add("d","d1")
如何在 VB.NET 中按值对集合项进行排序?
我想对此进行排序:
Dim col as Collection = New Collection
col.Add("b","b1")
col.Add("a","a1")
col.Add("d","d1")
就像@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
我决定使用字典:
Dim newcol = (From entry In col
Order By entry.Value Descending).ToDictionary(
Function(pair) pair.Key,
Function(pair) pair.Value)
由于Collection.Add采用一般对象类型而不是特定类型 - 排序是不可能的。由于对象需要相互比较才能进行排序,这就像比较橙子和苹果一样。
并且 Collection 提供按键而不是按值排序。
我认为,您可能必须扩展 Collection 类并实现排序。您可以使用Insert和RemoveAt方法移动项目。
只是一个想法/建议:如果值是特定类型的,如何使用其他数据结构。就像您可以按此链接中提到的值排序的字典