Vb.net 整数排序问题

Vb.net 整数排序问题,vb.net,console-application,Vb.net,Console Application,我正试图建立一个领导委员会,把最高的分数在顶部或左侧与此布局 99 - james, 90 - will, 80 - dan, 70 - phil, 60 - kevin, 570 - jim, 50 - ben, 40 - david, 30 - jose, 220 - peter, 20 - tony, 10 - nick, .sort命令对3位数以上的数字不起作用,我有一个列表要排序,但它不起作用 这就是我目前正在处理的问题 排行榜排序() 排行榜。反向() 它能很好地对100以下的数字

我正试图建立一个领导委员会,把最高的分数在顶部或左侧与此布局

99 - james,
90 - will,
80 - dan,
70 - phil,
60 - kevin,
570 - jim,
50 - ben,
40 - david,
30 - jose,
220 - peter,
20 - tony,
10 - nick,
.sort命令对3位数以上的数字不起作用,我有一个列表要排序,但它不起作用

这就是我目前正在处理的问题

排行榜排序() 排行榜。反向()

它能很好地对100以下的数字进行排序,这是我唯一的问题

Dim leaderboard As New List(Of String)

    Using Reader As New StreamReader("C:\Users\1111\OneDrive\Documents\Leaderboard.txt")
        While Reader.EndOfStream = False
            leaderboard.Add(Reader.ReadLine())
        End While
    End Using

    leaderboard.Sort()
    leaderboard.Reverse()

首先,我制作了一个
结构
作为保存数据的模板。它有两个属性。一个拿分数,一个拿名字

Private Structure Leader
    Public Property Score As Integer
    Public Property Name As String
End Structure
代码首先创建一个新的
Leader
(结构名称)列表。 我使用了
System.IO
中的
文件
类(您需要将其添加到代码文件顶部的
导入列表中)
.ReadAllLines
返回字符串数组,每个元素是文本文件中的一行

然后我们循环遍历每一行,用连字符将行拆分。这将为您提供一个包含2个元素的字符串数组。在尝试将第一个元素转换为整数之前,请确保删除所有空格。数组的第二个元素将包含名称,需要进行修剪。我还将逗号替换为空字符串

最后,一点Linq魔术将列表按分数降序排列到另一个列表中<代码>函数(lead)
是一个函数,它获取原始列表中的每个项目,并测试其
得分属性
。最后我调用了
.ToList
,这样
orderedLeader
就可以显示在
DataGridView

   Private Sub OPCode()
    Dim leaderboard As New List(Of Leader)
    Dim lines = File.ReadAllLines("leaderboard.txt")
    For Each line In lines
        Dim splitLine = line.Split("-"c)
        Dim sc = CInt(splitLine(0).Trim)
        Dim nm = splitLine(1).Trim.Replace(",", "")
        leaderboard.Add(New Leader With {.Score = sc, .Name = nm})
    Next
    Dim orderedLeaderbord = leaderboard.OrderByDescending(Function(lead) lead.Score).ToList

    DataGridView1.DataSource = orderedLeaderbord
End Sub

首先,我制作了一个
结构
作为保存数据的模板。它有两个属性。一个拿分数,一个拿名字

Private Structure Leader
    Public Property Score As Integer
    Public Property Name As String
End Structure
代码首先创建一个新的
Leader
(结构名称)列表。 我使用了
System.IO
中的
文件
类(您需要将其添加到代码文件顶部的
导入列表中)
.ReadAllLines
返回字符串数组,每个元素是文本文件中的一行

然后我们循环遍历每一行,用连字符将行拆分。这将为您提供一个包含2个元素的字符串数组。在尝试将第一个元素转换为整数之前,请确保删除所有空格。数组的第二个元素将包含名称,需要进行修剪。我还将逗号替换为空字符串

最后,一点Linq魔术将列表按分数降序排列到另一个列表中<代码>函数(lead)
是一个函数,它获取原始列表中的每个项目,并测试其
得分属性
。最后我调用了
.ToList
,这样
orderedLeader
就可以显示在
DataGridView

   Private Sub OPCode()
    Dim leaderboard As New List(Of Leader)
    Dim lines = File.ReadAllLines("leaderboard.txt")
    For Each line In lines
        Dim splitLine = line.Split("-"c)
        Dim sc = CInt(splitLine(0).Trim)
        Dim nm = splitLine(1).Trim.Replace(",", "")
        leaderboard.Add(New Leader With {.Score = sc, .Name = nm})
    Next
    Dim orderedLeaderbord = leaderboard.OrderByDescending(Function(lead) lead.Score).ToList

    DataGridView1.DataSource = orderedLeaderbord
End Sub

你在给数字或字符串排序吗?另外,排行榜是由什么组成的?(您的问题是添加这些详细信息)…并确保您发布了。@Jimi该变量是一个字符串,但是.sort仍然可以完美地工作到2位数字。如果您知道的分数(数字)和usenames(名称),则会制作排行榜leaderboard@will“但是.sort仍然可以完美地工作到两位数”否。排序字符串与排序数字的工作原理不同。干杯@41686d6564这真的很有帮助,多亏了你的评论,我不再有任何问题。你在排序数字或字符串吗?另外,排行榜是由什么组成的?(您的问题是添加这些详细信息)…并确保您发布了。@Jimi该变量是一个字符串,但是.sort仍然可以完美地工作到2位数字。如果您知道的分数(数字)和usenames(名称),则会制作排行榜leaderboard@will“但是.sort仍然可以完美地工作到两位数”否。排序字符串与排序数字的工作原理不同。干杯@41686d6564这真的很有帮助,感谢你的评论我不再有任何问题