我已经创建了这个程序,它将组装一个排行榜数组,该数组将存储游戏中得分与用户名的分数。每次玩游戏时,此排行榜都会不断更新。这些分数被附加到文本文件中,并且文本文件的内容被输入到排行榜数组中。我想对这个数组进行排序,以便分数下降,当然在相应的分数旁边有玩家名字。该数组看起来像这样:
| User1,9.0,2,0 | User2,8.0,0,1 | User3,8.5,0,1
所以这个数组的格式如下:
| Username1,totalscore,wins,loss |用户名2,总计,赢,输等......
如何对此数组进行排序,以便得分最高的用户首先出现在数组中并显示它?我听说合并排序最简单,但这是真的吗?我感谢任何帮助!
答案 0 :(得分:2)
您可以通过稀释度"|"
进行拆分,然后像这样使用OrderByDescending
:
Dim resultSet As String() = myString.Split("|"c) _
.Where(Function(s) Not String.IsNullOrWhitespace(s)) _
.OrderByDescending(
Function(s)
Dim str as String = s.Substring(s.IndexOf(" ") + 1)
Dim count As Integer = str.IndexOf(",")
Return Double.Parse(str.Substring(0, count))
End Function) _
.ToArray()
或者如果您希望元素成为List(Of String)
,则只需更改:
Dim resultSet As String()
为:
Dim resultSet As List(Of String)
然后在上面的管道中将ToArray()
调用更改为ToList()
。
上述代码的最终结果是String
数组:
User1, 9.0, 2, 0
User3, 8.5, 0, 1
User2, 8.0, 0, 1
不要忘记使用这些导入:
Imports System.Linq
Imports System.Collections.Generic