C#如何获取Dictionary<string, string[]>中值数组的元素个数
问题核心原因
你定义的Dictionary<string, string[]>中,csvFileNameSheetName.Values是字典所有值(也就是所有string[]实例)的集合,它的Count属性返回的是字典内键值对的总数量,和单个数组的长度无关。数组的长度是数组类型自带的Length属性,需要拿到具体的数组实例后才能读取。
不同场景的实现代码
- 获取指定键对应数组的长度:
// 将"你的目标键名"替换为实际要查询的字典键 int targetArrayLength = csvFileNameSheetName["你的目标键名"].Length;
注意:如果不确定键是否存在,建议先用
csvFileNameSheetName.TryGetValue("你的目标键名", out string[] arr)判断,避免抛出键不存在的异常。
- 遍历字典,逐个获取每个键对应数组的长度并操作数组元素:
foreach (var keyValuePair in csvFileNameSheetName) { string csvFileName = keyValuePair.Key; string[] sheetNames = keyValuePair.Value; // 获取当前键对应的数组长度 int currentArrayLength = sheetNames.Length; // 替换你之前错误的for循环,遍历当前数组 for (int idx = 0; idx < currentArrayLength; idx++) { string currentSheetName = sheetNames[idx]; // 编写你的业务逻辑 } }
- 统计字典内所有值数组的元素总数量:
需要先引入LINQ命名空间:using System.Linq;
int totalItemCount = csvFileNameSheetName.Values.Sum(array => array.Length);
原写法错误说明
你之前使用的csvFileNameSheetName.Values.Count,统计的是字典中存了多少个数组(也就是多少个键值对),不是数组内部的元素个数,自然无法达到预期效果。
内容的提问来源于stack exchange,提问作者bluejuggernaut
相关产品推荐
相关产品推荐

