Используйте
List<List<Integer>>
Список сам по себе не является многомерным, но вы можете использовать его для хранения списков, которые затем могут хранить целые числа, фактически действуя как многомерный массив. Затем вы можете получить доступ к элементам как:
// Get the element at index x,y
int element = list[x][y];
Заполнение списка начальными элементами с размерами x и y:
for (int i=0; i<x; i++)
{
// Have to create the inner list for each index, or it'll be null
list.Add(new List<Integer>());
for (int j=0; j<y; j++)
{
list[i].Add(someValue); // where someValue is whatever starting value you want
}
}