如何将两个一维List<int>转为二维List<List<int>>?报错求助
问题解决:二维列表生成时的索引越界错误
报错原因
你写的代码直接访问Allbox[i],但初始状态下Allbox是空的,没有任何子列表,所以会触发ArgumentOutOfRangeException——你试图访问一个不存在的索引位置。
正确实现方式
方式一:循环内先创建子列表
先初始化Allbox,然后在每次循环中创建新的子列表,添加对应元素后再将子列表加入Allbox:
List<int> Boxsize = new List<int> { 3, 1, 6, 7 }; List<int> Boxunit = new List<int> { 2, 7, 4, 9 }; List<List<int>> Allbox = new List<List<int>>(); for (int i = 0; i < Boxsize.Count; i++) { // 创建新的子列表 List<int> subBox = new List<int>(); // 加入对应位置的元素 subBox.Add(Boxsize[i]); subBox.Add(Boxunit[i]); // 将子列表添加到Allbox中 Allbox.Add(subBox); }
方式二:用LINQ简化代码(更简洁)
如果项目引用了System.Linq,可以用一行代码完成转换:
List<List<int>> Allbox = Boxsize.Zip(Boxunit, (size, unit) => new List<int> { size, unit }).ToList();
注意:要保证Boxsize和Boxunit的元素数量一致,否则Zip会以较短的列表长度为准生成结果。
内容的提问来源于stack exchange,提问作者HelpmeHelpyou
相关产品推荐
相关产品推荐

