How can I use linq to select gear columns

How can I use linq in C # to select the columns of a jagged array from int, I select the rows as follows.

int[][] values;
....
var rows = from row in values select row;

Thanks for the help.

+3
source share
4 answers
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));

Some notes:

  • this does not save empty space from arrays of different sizes (remember - unevenly).
  • rowindex (ri) is not used and can be removed.
  • rowindex can be used to generate values ​​for emptyspace if necessary
0
source
var cols = values.SelectMany(v=>v.Select(c=>c))
+1
source

Add another line:

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

You can also do it like this:

        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;
-1
source

Source: https://habr.com/ru/post/1750356/


All Articles