如何在C#中使用linq来选择一个锯齿状的整数数组的列,我按如下方式选择行。
int[][] values;
....
var rows = from row in values select row;
感谢您的帮助。
答案 0 :(得分:1)
var cols = values.SelectMany(v=>v.Select(c=>c))
答案 1 :(得分:1)
再添加一行:
int[][] values;
....
var rows = from row in values select row;
var cols = rows.SelectMany(x => x);
答案 2 :(得分: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));
一些注意事项:
答案 3 :(得分:-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;