C#中如何将List<int>转为每个元素单独成块的锯齿数组?
解决方案:将List转换为每个元素单独成块的锯齿数组
这问题太典型了,手动写死元素的方式确实没法适配任意长度的列表,其实用两种简单的方法就能搞定:
方法一:使用LINQ(最简洁)
利用LINQ的Select方法可以快速实现需求,一行代码就能完成转换:
// 假设你的List<int>已经有数据 List<int> list = new List<int> { 10, 20, 30, 40, 50 }; int[][] jaggedArray = list.Select(num => new[] { num }).ToArray();
代码解释:
Select(num => new[] { num }):遍历列表中的每一个整数,把单个元素包装成一个长度为1的int[]子数组。ToArray():把所有生成的子数组集合转换成int[][]类型的锯齿数组,自动适配原列表的长度,不管你列表有1个还是1000个元素都能处理。
方法二:使用普通循环(无需依赖LINQ)
如果项目里不想用LINQ,用基础的循环也能轻松实现:
List<int> list = new List<int> { 10, 20, 30, 40, 50 }; // 先初始化一个和原列表长度相同的锯齿数组 int[][] jaggedArray = new int[list.Count][]; for (int i = 0; i < list.Count; i++) { // 给每个位置赋值为只包含当前元素的子数组 jaggedArray[i] = new[] { list[i] }; }
优势对比:
你之前手动写的new[] { x1[0] }, new[] { x1[1] }这种方式,只能处理固定数量的元素,一旦列表长度变化就会报错或者遗漏元素。上面两种方法都是动态适配原列表长度,完全不需要修改代码就能处理任意长度的输入,扩展性强很多。
内容的提问来源于stack exchange,提问作者oooa s
相关产品推荐
相关产品推荐

