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

C#中如何按结尾子串对字符串列表排序(无需拆分多列表)

原地按后缀分组排序的C#实现

嘿,这个需求完全不用创建多个子列表,咱们直接用List<string>.Sort()自定义比较逻辑就能搞定,原地完成排序,完美符合你的要求!

核心思路

我们只需要给Sort()方法传入一个自定义的比较规则:以每个字符串中By_开头的后缀作为排序依据,相同后缀的自然会被排在一起,相当于完成了分组。

完整代码示例

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // 你的原始列表
        var functionNames = new List<string>
        {
            "Get_USER_By_ID",
            "Get_Product_By_Name",
            "Get_Product_By_ID",
            "Get_Location_By_Name"
        };

        // 原地排序:按By_后缀分组,相同后缀再按名称排序
        functionNames.Sort((a, b) =>
        {
            var suffixA = ExtractBySuffix(a);
            var suffixB = ExtractBySuffix(b);

            // 先比较后缀,后缀相同则比较完整名称(可选,按需调整)
            var suffixComparison = string.Compare(suffixA, suffixB, StringComparison.OrdinalIgnoreCase);
            return suffixComparison != 0 ? suffixComparison : string.Compare(a, b, StringComparison.OrdinalIgnoreCase);
        });

        // 输出验证结果
        foreach (var name in functionNames)
        {
            Console.WriteLine(name);
        }
    }

    // 辅助方法:提取字符串中以By_开头的后缀
    private static string ExtractBySuffix(string input)
    {
        // 找到最后一个By_的位置(避免前面出现By_干扰)
        var byIndex = input.LastIndexOf("By_", StringComparison.OrdinalIgnoreCase);
        // 如果存在By_,返回后缀;否则返回原字符串(可按需调整无后缀的排序位置)
        return byIndex >= 0 ? input.Substring(byIndex) : input;
    }
}

代码说明

  1. 原地排序:List.Sort()直接修改原列表,不会创建新集合,完全符合你不想拆分多个列表的需求
  2. 后缀提取逻辑:用LastIndexOf找最后一个By_的位置,避免字符串前面出现By_导致提取错误(比如如果有Get_By_User_By_ID这种极端情况也能正确提取)
  3. 排序规则:
    • 优先按By_xxx后缀排序,相同后缀的会自动归为一组
    • 后缀相同的情况下,再按完整函数名排序(这一步是可选的,如果你不需要可以直接返回suffixComparison)
  4. 灵活性:如果后续需要修改后缀关键字(比如改成With_),只需要修改ExtractBySuffix里的查找字符串即可;如果需要降序排序,把string.Compare的结果取反就行(比如return -suffixComparison;)

排序后结果

运行代码后,你的列表会变成:

Get_USER_By_ID
Get_Product_By_ID
Get_Product_By_Name
Get_Location_By_Name

所有By_ID的函数排在一起,By_Name的函数排在一起,完全满足分组排序的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:45:37