使用一層迴圈取出 不規則二維陣列(Jagged Arrays) 中所有元素

  • 958
  • 0
  • C#
  • 2017-03-03

有人問到:對於以下結構的 Array ,該如何用一層迴圈取出所有的元素?

int[][] a = new int[][] {
		new int[] { 1, 2 },
		new int[] { 3, 4, 5, 6, 7 },
		new int[] { 8, 9, 0 },
	};

 

 

我原本的想法是轉為一維陣列,就可以用一層迴圈

int[][] a = new int[][] {
		new int[] { 1, 2 },
		new int[] { 3, 4, 5, 6, 7 },
		new int[] { 8, 9, 0 },
};

var result = a.Aggregate(
	func: (seed, item) => seed.Concat(item).ToArray()
);

foreach (var item in result)
{
	Console.WriteLine(item);
}

後來看到 C#本事 才發現可以 用   SelectMany()

int[][] a = new int[][] {
		new int[] { 1, 2 },
		new int[] { 3, 4, 5, 6, 7 },
		new int[] { 8, 9, 0 },
};

var result = a.SelectMany(r => r);

foreach (var item in result)
{
	Console.WriteLine(item);
}

 

學寫程式總是從 殺雞(SelectMany)用牛刀(Aggregate) 開始
再來邁向 Baby Step 的境界~!!