如何在VB.NET中按值对集合项进行排序?
我想对此进行排序:
Dim col as Collection = New Collection
col.Add("b","b1")
col.Add("a","a1")
col.Add("d","d1")
答案 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类并实现排序。您可以使用Insert和RemoveAt方法移动项目。
只是一个想法/建议: 如果值是特定类型,那么如何使用其他数据结构。就像您可以按照link
中提到的那样按值排序的字典答案 2 :(得分:0)
我决定使用字典:
Dim newcol = (From entry In col
Order By entry.Value Descending).ToDictionary(
Function(pair) pair.Key,
Function(pair) pair.Value)