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

C#如何将从TXT文件读取的ListBox项按数字从小到大排序?

按价格数字从小到大排序ListBox项的解决方案

嘿,我来帮你搞定这个排序需求!你的现有代码只是把TXT文件里的内容直接塞进ListBox,没有做排序处理。要实现按价格从小到大排列,我们需要先提取每行里的价格数字,再基于这个数字排序,最后把排序后的内容添加到ListBox里。

具体步骤和修改后的代码

我把你的代码重新调整了一下,添加了价格提取、排序的逻辑,同时优化了错误处理(原来的空catch会隐藏问题,不利于调试):

private void Form1_Load(object sender, EventArgs e)
{
    try
    {
        // 读取TXT文件的所有行
        string[] lines = System.IO.File.ReadAllLines("file.txt");
        
        // 用元组存储每行内容和对应的价格,方便后续排序关联
        var itemsWithPrice = new List<(string Line, decimal Price)>();
        
        foreach (string line in lines)
        {
            // 按等号分割每行,分离物品描述和价格部分
            var lineParts = line.Split(new[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
            if (lineParts.Length == 2)
            {
                // 清理价格字符串:去掉空格、美元符号,尝试转成decimal类型(处理货币更精确)
                if (decimal.TryParse(lineParts[1].Trim().Replace("$", ""), out decimal itemPrice))
                {
                    itemsWithPrice.Add((line, itemPrice));
                }
            }
        }
        
        // 按价格从小到大排序(如果要降序,换成OrderByDescending即可)
        var sortedItems = itemsWithPrice.OrderBy(item => item.Price);
        
        // 将排序后的项逐个添加到ListBox
        foreach (var sortedItem in sortedItems)
        {
            listBox1.Items.Add(sortedItem.Line);
        }
    }
    catch (Exception ex)
    {
        // 出错时弹出提示,方便排查问题
        MessageBox.Show("操作出错啦:" + ex.Message);
    }
}

关键细节说明

  • 元组的使用:用(string Line, decimal Price)把每行内容和对应的价格绑定在一起,这样排序后不会丢失原来的文本内容。
  • 安全的价格提取:用decimal.TryParse而不是直接强制转换,这样如果TXT里有格式错误的行(比如没有价格、价格不是数字),程序不会崩溃,只会跳过这些无效行。
  • 货币类型选择:用decimal存储价格而不是int或double,因为decimal处理货币数值不会有浮点精度误差,更适合金额场景。
  • 排序逻辑:OrderBy(item => item.Price)实现升序排序,要是你需要从高到低排,换成OrderByDescending(item => item.Price)就行。

这样处理后,你的ListBox就会按照价格从小到大显示所有项啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:30:59