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

如何按数字字符串对包含Worker对象的C# List进行排序?

解决方案

首先明确排序规则:需要按Hours字段的数值大小降序排列,因为目标输出对应的数值顺序是202 > 33 > 22 > 11 > 2。由于Hours是字符串类型,直接按字符串排序会得到错误结果(字符串对比是按字符逐个判断,比如"2"会排在"202"前面),所以必须先将其转换为数值类型再排序。

基础实现代码

使用LINQ的OrderByDescending方法结合int.Parse即可完成需求:

// 按Hours的数值降序排序Worker列表
var sortedWorkers = work.OrderByDescending(w => int.Parse(w.Hours)).ToList();

// 将排序后的Name字段拼接成指定格式的字符串
string result = string.Join(",", sortedWorkers.Select(w => w.Name));

// 输出结果:Alex,Micky,Anna,Brad,Ron
Console.WriteLine(result);

安全优化(可选)

如果Hours字段可能存在非数字内容,建议用int.TryParse避免转换异常:

var sortedWorkers = work.OrderByDescending(w => 
{
    if (int.TryParse(w.Hours, out int hours))
        return hours;
    // 处理无法转换的情况,可根据需求设置默认值,这里设为0
    return 0;
}).ToList();

string result = string.Join(",", sortedWorkers.Select(w => w.Name));
Console.WriteLine(result);

关键说明

  • OrderByDescending用于实现降序排序,传入的委托负责将Worker对象映射为排序依据的数值(转换后的Hours整数)。
  • string.Join负责将排序后的Worker的Name字段用逗号连接成目标格式的字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:57:11