這是2D陣列:取(X,Y),其中條件匹配
int[][] array2D = new int[7][];
for (int i = 0; i < 7; i++)
array2D[i] = new int[7];
如何可以把以下到LINQ查詢,或者使用可枚舉的方法來實現相同的輸出?
var lst = new List<Point>();
for (int r = 0; r < array2D.Length; r++)
for (int c = 0; c < array2D[r].Length; c++)
if (array2D[r][c] == 0)
lst.Add(new Point(c, r));
編輯 - 基於解決方案@「王中王的回答
var lst = m_boardArr.SelectMany((row, rowIndex) =>
row.Select((val, colIndex) =>
new { val, point = new Point(colIndex, rowIndex) })
.Where(col => col.val == 0)
.Select(col => col.point)).ToList();
這將不起作用:c循環變量在已過濾的行上運行,並且不會反映原始數組的索引。 – CSJ
@CSJ你說得對,有點小錯。 –
大量的編輯,但你最終得到它:)這是最緊湊的答案。我喜歡這個。 – Nayan