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

C# Dictionary如何实现子字符串包含匹配以返回对应客户名称

实现字典Key包含匹配的修改方案

前置依赖

上述遍历匹配逻辑需要用到Linq,先在代码文件头部引入命名空间:

using System.Linq;

替换原有逻辑的代码

string projectName = (string)data["Project"];
// 遍历字典查找第一个被项目名称包含的Key对应的Value
customerName = projectCustomerNameMapping
    .FirstOrDefault(kv => projectName.Contains(kv.Key))
    .Value;
// 没匹配到的话使用默认值
if (string.IsNullOrEmpty(customerName))
{
    customerName = "OnePlus";
}

可选优化说明

  • 如果需要忽略大小写匹配,把Contains逻辑修改为:
    kv => projectName.Contains(kv.Key, StringComparison.OrdinalIgnoreCase)
    
  • 如果存在多个Key可能同时被包含的场景(比如字典同时有Dio和Diooiio两个Key),需要优先匹配更长的Key的话,可先对Key按长度倒序排序再匹配:
    customerName = projectCustomerNameMapping
        .OrderByDescending(kv => kv.Key.Length)
        .FirstOrDefault(kv => projectName.Contains(kv.Key))
        .Value;
    
  • 如果字典规模很大(超过1000个Key)且匹配逻辑调用频率很高,建议预先把Key存入Aho–Corasick自动机优化匹配性能,普通小字典直接用上述遍历逻辑足够。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:06:01