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

C#中批量重命名对象内字符串的高效实现方案咨询

优化大量标题重命名的实现方案

你当前用switch-case处理100个标题映射的方式确实会导致代码冗余、维护困难,这里提供两种更优的实现思路:

1. 字典映射(硬编码版)

把旧名称和新名称的对应关系存入Dictionary<string, string>,利用字典O(1)的查找效率替代大量case分支,代码更简洁易维护:

首先定义映射字典(可放在类级别复用,避免每次方法调用都初始化):

private static readonly Dictionary<string, string> NameMapping = new Dictionary<string, string>
{
    { "John Doe", "John Smith" },
    { "Alice Brown", "Alice Davis" },
    // 依次添加所有需要重命名的映射关系
};

然后改造转换方法,用LINQ简化代码:

private List<NameObject> TransformNames(List<NameObject> oldNameObjects)
{
    return oldNameObjects.Select(nameObj => 
        new NameObject 
        { 
            Name = NameMapping.TryGetValue(nameObj.Name, out var newName) ? newName : nameObj.Name 
        }).ToList();
}

如果偏好传统循环写法,也可以这样实现:

private List<NameObject> TransformNames(List<NameObject> oldNameObjects)
{
    var newNameObjects = new List<NameObject>();
    foreach (var nameObj in oldNameObjects)
    {
        if (NameMapping.TryGetValue(nameObj.Name, out var newName))
        {
            newNameObjects.Add(new NameObject { Name = newName });
        }
        else
        {
            newNameObjects.Add(new NameObject { Name = nameObj.Name });
        }
    }
    return newNameObjects;
}

2. 配置文件驱动(进阶版)

如果映射关系需要频繁修改,或者不想硬编码到代码里,可以把映射存到配置文件(比如appsettings.json),这样无需修改代码就能更新映射:

配置文件示例:

{
  "NameMappings": {
    "John Doe": "John Smith",
    "Alice Brown": "Alice Davis"
  }
}

然后在程序中加载配置到字典(示例基于.NET Core配置体系,可根据你的框架调整读取方式):

private Dictionary<string, string> LoadNameMappings(IConfiguration configuration)
{
    return configuration.GetSection("NameMappings").Get<Dictionary<string, string>>() 
           ?? new Dictionary<string, string>();
}

之后在转换方法中使用加载好的字典即可,这种方式更适合需要动态维护映射的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 10:42:46