有人問到:對於以下結構的 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 的境界~!!