using System.Collections.Generic;
public static class Extensions
public static IEnumerable<T> GetDimension<T>(this Array source, int dimension, params int[] indexes)
var indexList = indexes.ToList();
indexList.Insert(dimension, 0);
indexes = indexList.ToArray();
for (var i = 0; i < source.GetLength(dimension); i++)
yield return (T)source.GetValue(indexes);
public static void Main()
var test1 = new int[2, 2, 3];
foreach (var item in test1.GetDimension<int>(2, 1, 1))