Я просто хотел бы уточнить (с учетом примера и того, что задают).
Невыровненный массив представляет собой массив массивов и объявляется следующим образом:
string[][] data = new string[3][];
data[0] = new string[] { "0,[0]", "0,[1]", "0,[2]" };
data[1] = new string[] { "1,[0]", "1,[1]", "1,[2]" ];
data[2] = new string[] { "2,[0]", "1,[1]", "1,[2]" };
в сравнении с прямоугольного массива определяется как единый массив, который содержит несколько измерений:
string[,] data = new string[3,3];
data[0,0] = "0,0";
data[0,1] = "0,1";
data[0,2] = "0,2";
...etc
Из-за этого, зубчатый массив IQueryable/IEnumerab le, потому что вы можете перебирать его для получения массива на каждой итерации. В то время как прямоугольный массив является не IQueryable/IEnumerable, потому что элементы рассматриваются в полном измерении (0,0 0,1..etc), так что вы не будете иметь возможность использовать Linq или любые предопределенные функции, созданные для Массив в этом случае.
Хотя вы можете перебрать массив один раз (и добиться того, что вы хотите), как это:
/// INPUT: rowIndex, OUTPUT: An object[] of data for that row
int colLength = stringArray.GetLength(1);
object[] rowData = new object[colLength];
for (int col = 0; col < colLength; col++) {
rowData[col] = stringArray[rowIndex, col] as object;
}
return rowData;
/// INPUT: colIndex, OUTPUT: An object[] of data for that column
int rowLength = stringArray.GetLength(0);
object[] colData = new object[rowLength];
for (int row = 0; r < rowLength; row++) {
colData[row] = stringArray[row, colIndex] as object;
}
return colData;
Надеется, что это помогает :)
Я не думаю, что это делает то, что было предложено для («либо одной строки или одного столбца»). – 2008-10-24 05:31:10
Не LINQ будет использовать цикл внутри? – Rohit 2008-10-24 05:39:57
Спасибо, что указали, что Джон. Я прочитал эту часть ответа. – JaredPar 2008-10-24 06:13:14