如何基于Id取余结果初始化字典数组并分配对应记录?
解决方案:按Id%10分配字典数组存储
嘿,这事儿不难搞定!核心就是先确保数组里的每个字典都被正确初始化,再根据Id%10的结果把记录分流到对应位置就行。
步骤1:初始化字典数组
首先得把数组里的每一个字典实例化,不然直接往里加元素会触发NullReferenceException:
// 创建包含10个字典的数组,并逐个初始化 Dictionary<int, string>[] matrix = new Dictionary<int, string>[10]; for (int i = 0; i < matrix.Length; i++) { matrix[i] = new Dictionary<int, string>(); }
步骤2:分流存储记录
假设你已经有了以Id为键的源字典sourceDict,遍历它并计算每个Id对应的索引,把键值对存入对应位置的字典:
// 示例源字典,替换成你实际的数据源 Dictionary<int, string> sourceDict = new Dictionary<int, string> { { 7, "用户7的记录" }, { 15, "用户15的记录" }, { 23, "用户23的记录" }, { 30, "用户30的记录" } }; // 遍历源字典,分配到对应索引的字典中 foreach (var keyValuePair in sourceDict) { int id = keyValuePair.Key; int targetIndex = id % 10; // 计算目标数组索引 // 两种添加方式选一种: // 1. 如果要避免重复Id报错,用Add(重复Id会抛异常) matrix[targetIndex].Add(id, keyValuePair.Value); // 2. 如果要覆盖已有Id的记录,直接赋值 // matrix[targetIndex][id] = keyValuePair.Value; }
效果示例
比如:
- Id=15 → 15%10=5 → 存入
matrix[5] - Id=30 → 30%10=0 → 存入
matrix[0]
这样就能完美实现你要的按Id取模分配存储的需求啦!
内容的提问来源于stack exchange,提问作者Harshil Doshi
相关产品推荐
相关产品推荐

