0

我在 vb.net 中有一个 list(of list(of string)),它是一个包含列表的列表,其中包含 5 个字符串列表项。

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

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

multiList.sort(compare second item in lists)

谢谢

4

3 回答 3

3

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

    共享函数 CompareLists(L1 作为列表(字符串),L2 作为列表(字符串))作为整数
        返回 L1(1).CompareTo(L2(1))
    结束功能

然后,当您要执行排序时:

    Array.Sort(myArray, AddressOf CompareLists)

如果某些列表可能没有有效的内部列表,则必须添加代码来处理所有可能的情况。

于 2012-06-25T15:07:52.160 回答
2

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

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

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

于 2012-06-25T15:13:27.490 回答
0

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

Dim list As New SortedList(Of Integer, String)

它通过按键(在这种情况下为整数)排序​​来工作,正如我所说的,我不确定你的要求是什么,但也许你可以用它来解决你的问题。

于 2012-06-25T15:11:36.333 回答