.net 如何对列表(列表的字符串)排序

.net 如何对列表(列表的字符串)排序,.net,vb.net,list,sorting,.net,Vb.net,List,Sorting,我在vb.net中有一个列表(列表(字符串)),该列表包含有5个字符串列表项的列表 我想按包含的列表中的第二项对列表进行排序,但我不知道.sort方法中需要什么参数。我需要将什么作为参数输入。我读了一些关于编写比较器函数并将其放在括号中的内容,但我不明白它是如何工作的 dim multiList as list(of list(of string)) multiList.sort(compare second item in lists) 感谢根据非默认条件对列表排序的最简单方法是编写一个函

我在vb.net中有一个列表(列表(字符串)),该列表包含有5个字符串列表项的列表

我想按包含的列表中的第二项对列表进行排序,但我不知道.sort方法中需要什么参数。我需要将什么作为参数输入。我读了一些关于编写比较器函数并将其放在括号中的内容,但我不明白它是如何工作的

dim multiList as list(of list(of string))

multiList.sort(compare second item in lists)

感谢

根据非默认条件对列表排序的最简单方法是编写一个函数,给定任何一对项,如果第一项大于第二项,则返回一个正整数;如果第二项大于第一项,则返回一个负整数;如果两个条件都不适用,则返回零(这意味着这些项具有相等的等级——不一定是“相等”)。例如,如果您绝对肯定列表列表中的每个内部列表都将有一个非空字符串作为其第二项:

Shared Function CompareLists(L1 As List(Of String), L2 As List(Of String)) As Integer Return L1(1).CompareTo(L2(1)) End Function 共享函数比较列表(L1作为(字符串的)列表,L2作为(字符串的)列表)作为整数 返回L1(1)。比较(L2(1)) 端函数 然后,当您要执行排序时:

Array.Sort(myArray, AddressOf CompareLists) Sort(myArray,AddressOf CompareList)
如果某些列表可能没有有效的内部列表,则必须添加代码来处理所有可能的情况。

根据非默认条件对列表进行排序的最简单方法是编写一个函数,给定任何一对项,如果第一个大于第二个,则返回一个正整数;如果第二个大于第二个,则返回一个负整数第二项大于第一项,如果两个条件都不适用,则为零(意味着这些项具有相等的等级——不一定是“相等”)。例如,如果您为绝对正值,则列表列表中的每个内部列表都将有一个非空字符串作为其第二项:

Shared Function CompareLists(L1 As List(Of String), L2 As List(Of String)) As Integer Return L1(1).CompareTo(L2(1)) End Function 共享函数比较列表(L1作为(字符串的)列表,L2作为(字符串的)列表)作为整数 返回L1(1)。比较(L2(1)) 端函数 然后,当您要执行排序时:

Array.Sort(myArray, AddressOf CompareLists) Sort(myArray,AddressOf CompareList)
如果某些列表可能没有有效的内部列表,您必须添加代码来处理所有可能的情况。

我不完全理解您要做的事情,但您查看过排序列表吗

Dim list As New SortedList(Of Integer, String)

它的工作原理是按键排序(在本例中是整数),正如我所说的,我不太清楚你的要求,但也许你可以用它来解决你的问题。

我不完全理解你想做什么,但你看过排序列表了吗

Dim list As New SortedList(Of Integer, String)

它的工作原理是按键排序(本例中为整数),正如我所说的,我不确定您的要求是什么,但也许您可以使用它来解决您的问题。

您可以将lambda表达式传递给排序方法:

multilist.Sort(Function(x, y) x(1).CompareTo(y(1)))

这将按每个包含列表的第二个元素对列表进行排序。

您可以将lambda表达式传递给排序方法:

multilist.Sort(Function(x, y) x(1).CompareTo(y(1)))

这将按照每个包含列表的第二个元素对列表进行排序。

感谢您的解释。我将使用lambda表达式,就像我在另一个答案中看到的那样,但您的答案帮助我理解了发生的事情,因此您得到了正确的答案:)@Aeropher:我理解lambda表达式,但我不喜欢它们隐式地将局部变量添加到闭包中的方式。因此,对代码的细微更改可能会带来重要的性能实现。顺便说一句,我应该让上面的函数共享,以避免每次使用
排序
函数时生成额外的委托好的。谢谢你的解释。我将使用一个lambda表达式,就像我在另一个答案中看到的那样,但是你的答案帮助我理解了发生了什么,所以你得到了正确的答案:)@Aeropher:我理解lambda表达式,但我不喜欢它们隐式地将局部变量转化为闭包的方式。因此,对代码的细微更改可能会带来主要的性能实现。顺便说一句,我应该让上面的
函数共享
,以避免每次调用
排序
函数时生成额外的委托。谢谢,这是我将要使用的,但我没有得到足够的详细信息。谢谢,这就是我将要使用的,但是我没有得到足够的关于它如何工作的详细信息。我希望能够按照列表中的任何值而不是键值进行排序。我在上面选择了一个答案,可能会告诉你我的意思:)我希望能够按照列表中的任何值而不是键值进行排序。我在上面选择了一个答案,可能会告诉你我的意思:)