Это:
List<string>[,] lst = new List<string>[100, 14];
объявляет двумерный массив значений List<string>
.
Это:
roomno.Cast<string>[,]().ToList();
... просто не имеет смысла из-за позиции [,]
между аргументом типа и ()
для вызова метода. Если вы изменили его на:
roomno.Cast<string[,]>().ToList();
тогда это будет создавать List<string[,]>
, но это все равно не то же самое, что List<string>[,]
.
Кроме того, roomno
- это просто двумерный массив строк - который на самом деле является единственной последовательностью строк в отношении LINQ - так почему вы пытаетесь преобразовать его в 3 -мерный тип?
Не ясно, что вы пытаетесь сделать или почему вы пытаетесь это сделать, но, надеюсь, это, по крайней мере, поможет объяснить, почему это не работает ...
Если честно, я бы старался не смешивать двумерные массивы и списки в одном типе. Поможет ли другой пользовательский тип?
РЕДАКТИРОВАТЬ: LINQ не будет много использовать с 2-D массивом. Он действительно предназначен для отдельных последовательностей. Я подозреваю, что вам нужно будет сделать это «вручную» - вот небольшая, но полная программа, например:
using System;
class Program
{
static void Main(string[] args)
{
string[,] values = {
{"x", "y", "z"},
{"a", "b", "c"},
{"0", "1", "2"}
};
values = RemoveRow(values, 1);
for (int row = 0; row < values.GetLength(0); row++)
{
for (int column = 0; column < values.GetLength(1); column++)
{
Console.Write(values[row, column]);
}
Console.WriteLine();
}
}
private static string[,] RemoveRow(string[,] array, int row)
{
int rowCount = array.GetLength(0);
int columnCount = array.GetLength(1);
string[,] ret = new string[rowCount - 1, columnCount];
Array.Copy(array, 0, ret, 0, row * columnCount);
Array.Copy(array, (row + 1) * columnCount,
ret, row * columnCount, (rowCount - row - 1) * columnCount);
return ret;
}
}