如何基于Dictionary构建含ID与Region的目标数据结构?
解决方案
首先纠正你示例中的一个小错误:你写的Region = tmpMap[Region][0]是取该Region下的第一个ID,而非Region本身的名称,正确的做法是直接使用字典的Key(即Region名称)。
以下是基于你已有的tmpMap生成目标data数组的完整实现:
// 定义空数组,全局复用即可 string[] emptyStringArray = new string[0]; // 遍历字典,生成目标结构数组 var data = tmpMap.Select(kvp => new { // 将当前Region对应的ID列表转为string数组 IDs = kvp.Value.ToArray(), NotUsed = emptyStringArray, // 取字典的Key作为Region名称 Region = kvp.Key }).ToArray();
关键说明:
tmpMap.Select(kvp => ...):遍历字典中的每一组键值对(kvp是KeyValuePair<string, List<string>>类型,kvp.Key是Region名称,kvp.Value是该Region对应的所有ID列表)。kvp.Value.ToArray():把List类型的ID集合转换为你需要的string数组格式。- 最后调用
ToArray()将LINQ查询结果转为数组,得到的data就是动态生成的目标结构,每个元素对应一个Region的信息。
另外,针对你提到的“无法便捷获取某Key对应的所有Value”,可以通过以下方式安全获取:
// 安全获取指定Region的ID列表 if (tmpMap.TryGetValue("目标Region名称", out var targetIds)) { // 使用targetIds(List<string>类型),如需数组可转成: string[] targetIdsArray = targetIds.ToArray(); }
内容的提问来源于stack exchange,提问作者zfsKing
相关产品推荐
相关产品推荐

