Chciałbym wyjaśnić (biorąc pod uwagę przykład i pytanie).
postrzępione Tablica jest szereg tablic i jest uznana tak:
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]" };
kontra prostokątnego macierzy zdefiniowany jako pojedynczej tablicy, która posiada wiele aspektów:
string[,] data = new string[3,3];
data[0,0] = "0,0";
data[0,1] = "0,1";
data[0,2] = "0,2";
...etc
Z tego powodu, poszarpana tablica to IQueryable/IEnumerab le ponieważ możesz iterować nad nim, aby otrzymać tablicę w każdej iteracji. Podczas gdy prostokątna tablica jest nie IQueryable/IEnumerable, ponieważ elementy są adresowane w pełnym wymiarze (0,0 0,1..etc), więc nie będziesz mieć możliwości używania Linq lub jakichkolwiek predefiniowanych funkcji stworzonych dla Array w tym przypadku.
Choć można iteracyjne nad tablicy raz (i osiągnąć to, co chcesz) tak:
/// 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;
nadzieję, że to pomaga :)
Nie sądzę, że robi to, co został poproszony o („albo pojedynczego wiersza lub pojedynczej kolumny”). –
Czy LINQ nie używa wewnętrznej pętli? – Rohit
Dzięki za wskazanie, że Jon. Przeczytałem dokładnie tę część odpowiedzi. – JaredPar