我有一个列表(列表(字符串))在vb.net中,这是一个包含列表中包含5个字符串列表项的列表。
我想按列表中的第二项对列表进行排序,但我不知道.sort方法中需要什么参数。我需要将其作为参数放入什么。我读了一些关于编写比较器函数并将其放在括号中的内容,但我不明白它是如何工作的。
dim multiList as list(of list(of string))
multiList.sort(compare second item in lists)
由于
答案 0 :(得分:3)
根据非默认条件对某些事物列表进行排序的最简单方法是编写一个函数,给定任何一对项目,如果第一个大于第二个,则返回正整数,负数如果第二项大于第一项,则为整数;如果两种条件均不适用,则为零(意味着项具有相同的排名 - 不一定是“相等”)。例如,如果您绝对肯定,列表列表中的每个内部列表都将使用非空字符串作为其第二项:
Shared Function CompareLists(L1 As List(Of String), L2 As List(Of String)) As Integer Return L1(1).CompareTo(L2(1)) End Function
然后当你想要进行排序时:
Array.Sort(myArray, AddressOf CompareLists)
如果某些列表可能没有有效的内部列表,则必须添加代码来处理所有可能的情况。
答案 1 :(得分:2)
您可以将lambda表达式传递给Sort方法:
multilist.Sort(Function(x, y) x(1).CompareTo(y(1)))
这将按每个包含列表的第二个元素对列表进行排序。
答案 2 :(得分:0)
我还没有完全理解你想要做什么,但是你看看排序列表了吗?
Dim list As New SortedList(Of Integer, String)
它的工作方式是按键排序(在这种情况下为整数),正如我所说,我不确定你的要求,但也许你可以用它来解决你的问题。