2010-06-16 2 views

ответ

0
IEnumerable<IEnumerable<int>> columns = values 
    .SelectMany((row, ri) => row 
    .Select((x, ci) => new {cell = x, ci, ri})) 
    .GroupBy(z => z.ci) 
    .Select(g => g.Select(z => z.cell)); 

Некоторые примечания:

  • это не сохранить пустой пространство из массивов разного размера (помните - зубчатые).
  • rowindex (ri) не используется и может быть удален.
  • RowIndex может быть использован для генерации значений для emptyspace при необходимости
1
var cols = values.SelectMany(v=>v.Select(c=>c)) 
+0

Мне кажется, это сглаживает массив, есть способ, чтобы получить столбцы как массивы? – CoGo

1

Добавить еще одну строку:

int[][] values; 
.... 
var rows = from row in values select row; 
var cols = rows.SelectMany(x => x); 
+0

Мне кажется, что это выравнивает массив, есть ли способ получить столбцы в виде массивов? – CoGo

-1

вы также можете сделать это следующим образом:

 int[][] values = new int[5][]; 
     values[0] = new int[5] { 1, 2, 3, 4, 5 }; 
     values[1] = new int[5] { 1, 2, 3, 4, 5 }; 
     values[2] = new int[5] { 1, 2, 3, 4, 5 }; 
     values[3] = new int[5] { 1, 2, 3, 4, 5 }; 
     values[4] = new int[5] { 1, 2, 3, 4, 5 }; 

     var rows = from r in values where r[0] == 1 select r[0]; 

     //two options here for navigating each row or navigating one row 

     var rows = from r in values[0] where r == 1 select r; 
Смежные вопросы