Словарь хорош, если у вас есть пробелы в ваших индексах. Если у вас есть сетка ячеек, то я думаю, что это не так (если у вас нет много пустых ячеек).
Так почему бы не иметь двумерный массив? например,
int[,] cells = new int[maxRow,maxColumn];
Таким образом, если вы хотите запросить определенную ячейку, вы просто делаете
int cellValue = cells[row,column]
или
public int GetCell(Int32 row, Int32 column)
{
return cells[row, column]
}
Если вы хотите получить все подряд:
for(int col = 0; col < maxColumn; col++)
int cellValue = cells[row, col];
или
public IEnumerable<int> GetAllCellsInRow(Int32 row)
{
for(int col = 0; col < maxColumn; col++)
yeldReturn cells[row, col];
}
И для всего в колонке аналогично
for(int row = 0; row < maxRow; row++)
int cellValue = cells[row, column];
или
public IEnumerable<int> GetAllCellsInColumn(Int32 column)
{
for(int row = 0; row < maxRow; row++)
yield return cells[row, column];
}