Dictionary已知内层Key查找Value 场景说明结构Dictionarystring, Dictionarystring, string AppAttributes已知内层Key要查找对应Value存在两种需求只找第一个匹配就返回找到所有外层Key 对应Value可能多个外层字典包含同一个内层Key方式1找到第一条匹配找到即退出性能更好string targetInnerKey 你已知的内层Key; string result null; string findOuterKey null; if (AppAttributes ! null) { foreach (var outerKvp in AppAttributes) { var innerDict outerKvp.Value; if (innerDict null) continue; if (innerDict.TryGetValue(targetInnerKey, out string val)) { result val; findOuterKey outerKvp.Key; break; // 找到第一个直接跳出循环 } } } if (result ! null) { Console.WriteLine($外层Key:{findOuterKey} 值:{result}); }方式2查找全部匹配存在多个外层拥有相同内层key时使用string targetInnerKey 你已知的内层Key; // 存储外层Key - 对应值 Dictionarystring, string matchResult new Dictionarystring, string(); if (AppAttributes ! null) { foreach (var outerKvp in AppAttributes) { var innerDict outerKvp.Value; if (innerDict null) continue; if (innerDict.TryGetValue(targetInnerKey, out string val)) { matchResult.Add(outerKvp.Key, val); } } }方式3LINQ 简写版本string targetInnerKey 你已知的内层Key; // 获取第一条 var firstMatch AppAttributes? .SelectMany(o o.Value .Where(i i.Key targetInnerKey) .Select(i new { OuterKey o.Key, Value i.Value })) .FirstOrDefault(); if (firstMatch ! null) { string value firstMatch.Value; string outerKey firstMatch.OuterKey; } // 获取所有匹配 var allMatchList AppAttributes? .SelectMany(o o.Value .Where(i i.Key targetInnerKey) .Select(i new { OuterKey o.Key, Value i.Value })) .ToList();⚠️重要提醒这种结构无法直接通过内层Key快速索引必须遍历所有外层字典。如果查询频繁建议额外建立反向索引Dictionarystring, List(string OuterKey, string Value)补充封装成方法直接复制使用/// summary /// 根据内层Key查找第一个对应的值 /// /summary public bool TryGetByInnerKey(string innerKey, out string value, out string outerKey) { value null; outerKey null; if (AppAttributes null) return false; foreach (var outer in AppAttributes) { if (outer.Value null) continue; if (outer.Value.TryGetValue(innerKey, out value)) { outerKey outer.Key; return true; } } return false; } // 调用示例 if (TryGetByInnerKey(InnerKeyTest, out string val, out string outer)) { // 查到了 val }如果你业务上同时知道外层Key内层Key那就不需要遍历直接取值if(AppAttributes.TryGetValue(外层Key,out var innerDic) innerDic.TryGetValue(内层Key,out string val)) { }

相关新闻

最新新闻

从H桥到FOC:电机驱动与控制全链路工程实践指南

从H桥到FOC:电机驱动与控制全链路工程实践指南

在机器人、自动化、无人机和智能硬件领域,电机驱动与控制是连接数字指令与物理动作的核心桥梁。无论是让机械臂精准抓取,还是让无人机稳定悬停,其背后都离不开对电机转矩、转速和位置的精确控制。然而,从原理图上的一个H桥电路&am…

2026/9/1 8:21:40
OpenCV相机标定实战:张正友标定法原理与代码实现

OpenCV相机标定实战:张正友标定法原理与代码实现

简介:一套完整的张正友相机标定OpenCV实现源码,基于Visual Studio工程组织,面向计算机视觉入门及中级开发者,适合需要掌握相机标定、内参外参求解与畸变矫正的读者。代码附带详细注释,并配有棋盘图和14张不同角度标定图…

2026/9/1 8:21:40
Excel VBA实战入门:30天从零到自动化,告别重复性表格操作

Excel VBA实战入门:30天从零到自动化,告别重复性表格操作

每天面对成百上千行的Excel表格,重复着复制、粘贴、筛选、汇总的机械操作,你是否感到疲惫不堪?当领导临时要求从几十个部门报表中快速合并数据并生成分析图表时,你是否只能加班熬夜手动处理?如果你曾幻想过让Excel自动…

2026/9/1 8:21:40
基于深度学习的人脸识别签到系统设计与实现全解析

基于深度学习的人脸识别签到系统设计与实现全解析

简介:一份基于深度学习的人脸识别签到系统完整项目源码,面向计算机相关专业毕业设计、课程设计以及人脸识别应用开发者。项目利用dlib等深度学习模型实现人脸检测、特征提取与比对,完成自动化身份验证与签到考勤,能够有效应用于课…

2026/9/1 8:21:40
【Qt教程31】GCC 9.3.1 ARM64 下含 QString 结构体的隐式拷贝构造崩溃

【Qt教程31】GCC 9.3.1 ARM64 下含 QString 结构体的隐式拷贝构造崩溃

【Qt教程31】GCC 9.3.1 ARM64 下含 QString 结构体的隐式拷贝构造崩溃故障概况触发条件(经实际验证)验证过程最简复现无效的尝试有效的修复(二选一)根因修复建议复现 Demodemo_bug.hdemo_fix_a.h —— 方案 A:QString …

2026/9/1 8:21:40
别被网红 AI 坑!2026 实测学术 AI 排行榜,避开延毕风险

别被网红 AI 坑!2026 实测学术 AI 排行榜,避开延毕风险

每到毕业季很多同学纠结,到底哪款 AI 适合写论文、可以用来定稿、不容易翻车。AI 工具迭代速度很快,网上很多旧测评已经失去参考价值,不少网红工具实际翻车案例越来越多。对标 2026 高校查重 AIGC 双审新规,统一测试条件&#xf…

2026/9/1 8:16:39