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

C#本地实现:以变量值为名称创建变量并统计地区重复次数

在C#中动态创建变量名及本地统计地区出现次数的解决方案

关于动态以变量值为名称创建变量的说明

C#是静态类型编译语言,无法在运行时动态生成以变量值为名称的本地变量——本地变量的名称在编译阶段就已确定,不能随运行时数据动态改变。但可以用键值对集合(比如Dictionary<string, int>)来模拟这种“动态变量”的效果:把地区名称作为集合的Key,统计次数作为Value,完全满足需求,且属于本地变量,无需全局定义。

本地统计各地区出现次数的实现代码

直接修改你的代码,用Dictionary完成统计,更简洁高效:

void Start()
{
    // 关联供应商与买家,提取所需字段
    var match = from s in _supplier
                join b in _buyers on s.District equals b.District
                select new
                {
                    District = s.District,
                    MatchSupplier = s,
                    MatchBuyer = b.Name
                };

    // 本地字典:键=地区名,值=出现次数
    Dictionary<string, int> districtCount = new Dictionary<string, int>();

    foreach (var item in match)
    {
        string currentDistrict = item.District;
        if (districtCount.ContainsKey(currentDistrict))
        {
            // 地区已存在,次数+1
            districtCount[currentDistrict]++;
        }
        else
        {
            // 地区首次出现,初始化次数为1
            districtCount.Add(currentDistrict, 1);
        }
    }

    // 打印所有地区的统计结果
    foreach (var kvp in districtCount)
    {
        Debug.Log($"地区:{kvp.Key},出现次数:{kvp.Value}");
    }

    // 打印不同地区的总数
    Debug.Log($"总计不同地区数量:{districtCount.Count}");
}

代码关键点说明

  • 用Dictionary<string, int>替代原List<string>,同时存储地区名和次数,避免重复判断,查询效率从O(n)提升到O(1)
  • 关联查询时直接提取District字段,减少重复属性访问
  • 遍历匹配结果时,直接维护字典的计数逻辑,无需额外分支处理重复添加
  • 最终遍历字典即可输出所有地区的统计数据,逻辑清晰

额外说明

如果非要模拟“动态变量”的语法体验,也可以使用ExpandoObject(动态类型),但这种方式类型不安全,且对于统计次数的场景,Dictionary是更优、更高效的选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:41:35