【问题标题】:How to convert List<List<int>> to an array of arrays如何将 List<List<int>> 转换为数组数组
【发布时间】:2011-06-04 17:37:42
【问题描述】:

将列表转换为int[][] 类型数组的最佳方法是什么?

List<List<int>> lst = new List<List<int>>();

【问题讨论】:

标签: c# arrays


【解决方案1】:
int[][] arrays = lst.Select(a => a.ToArray()).ToArray();

【讨论】:

  • 你可以使用lst.Select(Enumerable.ToArray).ToArray()
  • 如果我们需要在int[,] arrays中赋值怎么办?这可能吗?
  • 也许你可以做类似 var list = new List>();对象[,] 数组 = 新对象[N, M]; for (int i = 0; i object[,],其中 N 和 M 分别是外部和内部列表的维度
【解决方案2】:

使用 LINQ 很容易:

lst.Select(l => l.ToArray()).ToArray()

如果你真的想要二维数组(int[,],而不是int[][]),那会更困难,最好的解决方案可能是使用嵌套的fors。

【讨论】:

  • 差不多6年后,我想如果我想要int[,],除了运行显式循环别无他法?
【解决方案3】:

您可以使用 linq 轻松完成。

int[][] arrays = lst.Select(a => a.ToArray()).ToArray();

但如果您想要另一种方式,您可以遍历列表并手动生成二维数组。

how to loop through nested list

【讨论】:

    【解决方案4】:

    没有库函数可以做到这一点。

    您需要使用循环来执行此操作。

    int[][] newlist = new int[lst.Size][];
    for (int i = 0; i < lst.Size; i++)
    {
        List<int> sublist = lst.ElementAt(i);
        newlist[i] = new int[sublis.Size];
        for (int j = 0; j < sublist.Size; j++)
        {
            newlist[i][j] = sublist.ElementAt(j);
        }
    }
    

    你去!

    【讨论】:

      猜你喜欢
      • 2011-05-18
      • 1970-01-01
      • 1970-01-01
      • 2022-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多