public static PositionTuple FirstPositionOf(this int[,] someTwoDimensionalArray, int someNumber) { return(someTwoDimensionalArray .AsEnumerable() .Select((num, index) => new { Number = num, Tuple = new PositionTuple { X = index / (someTwoDimensionalArray.GetUpperBound(1) + 1), Y = index % (someTwoDimensionalArray.GetUpperBound(1) + 1) } }) .Where(pair => pair.Number == someNumber) .Select(pair => pair.Tuple) .First()); }
public void AsEnumerable() { int[,] candidate = { { 1, 2, 3, }, { 4, 5, 6, }, { 7, 8, 9, }, { 10, 11, 12, }, }; CollectionAssert.AreEqual(Enumerable.Range(1, 12).ToArray(), candidate.AsEnumerable().ToArray()); }