You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将两个一维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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 07:06:22