using System.Collections.Generic;
using System.Threading.Tasks;
static public class ExtensionMethods
public static IEnumerable<T> ToSingleDimension<T>(this T[,] source)
for (int i=0; i<=source.GetUpperBound(1); i++)
for (int j=0; j<=source.GetUpperBound(0); j++)
yield return source[j,i];
public static void Main()
int[,] result = new int[2, 5];
var resultArray1 = result.Cast<int>().Select( n => n.ToString("00")).ToArray();
var resultArray2 = result.ToSingleDimension().Select( n => n.ToString("00")).ToArray();
Console.WriteLine("Using default LINQ logic:");
foreach (var r in resultArray1) Console.WriteLine("{0}", r);
Console.WriteLine("Using extension method logic:");
foreach (var r in resultArray2) Console.WriteLine("{0}", r);