You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET实现ListBox列表项按整数值从高到低降序排序

程序设计视图

注:本人接触VB.NET开发仅3周左右,若存在命名规范使用不当的情况敬请谅解,例如误将string字符串类型表述为文字类型。
建议先阅读以下说明再查看提供的截图,截图中红色标注内容无需关注,蓝色标注为数据传输流向。

业务逻辑

场景为足球最多进球挑战赛的数据录入,执行流程:

  • 依次录入参赛者姓名、获得积分(取值范围1-100)、所属赛事(系列1/2/3)
  • 单条数据录入完成后添加至名为solo的ListBox控件
  • 重复录入直至累计存满20名参赛者信息
  • 点击Add to Rank按钮,将solo列表框内所有条目迁移至名为RANK的ListBox控件
待实现需求

将RANK列表框内所有条目按积分字段从高到低(100到1)做降序排列。当前未掌握类、数组的使用方法,虽已将积分字段放在列表项内容的最前端,仍不清楚排序逻辑的实现方式。

实现方案(无需自定义类、手动操作数组)

既然你已经把积分放在每条列表项的最开头,不需要额外重构数据存储结构,直接用内置的排序方法提取开头的积分值做比较即可,全程不需要写复杂的类或者数组操作。
直接将以下代码写入Add to Rank按钮的点击事件中即可生效:

' 清空RANK原有内容,避免重复加载
RANK.Items.Clear()

' 取出solo中所有条目存入可排序的集合
Dim itemList As New List(Of String)
For Each singleItem In solo.Items
    itemList.Add(singleItem.ToString())
Next

' 按每条开头的积分值做降序排序
itemList.Sort(Function(itemX, itemY)
    ' 提取每条内容最前端的积分数字,如果你用的分隔符不是空格,替换Split括号里的空格即可
    Dim scoreX = Integer.Parse(itemX.Split(" "c)(0))
    Dim scoreY = Integer.Parse(itemY.Split(" "c)(0))
    ' 按分数从高到低排序
    Return scoreY.CompareTo(scoreX)
End Function)

' 将排好序的内容批量加载到RANK列表
RANK.Items.AddRange(itemList.ToArray())

注意:如果你存储列表项时,积分和后续姓名、赛事的分隔符不是空格(比如用了|、-),只需要把代码中Split(" "c)里的空格替换成你实际使用的分隔符即可。

内容的提问来源于stack exchange,提问作者Kram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 00:18:23