2
我有一個標準的2D鋸齒陣列int[][] arr
。c# - LINQ查找2D鋸齒陣列最小值,返回索引
讓我們調用i
和j
行和列的索引。
我想通過LINQ檢索索引i
和j
指向矩陣的最小值。
什麼,我想實現一個想法是BRI
from num in arr
where min = (from num in arr select min(num))
select i, j
我有一個標準的2D鋸齒陣列int[][] arr
。c# - LINQ查找2D鋸齒陣列最小值,返回索引
讓我們調用i
和j
行和列的索引。
我想通過LINQ檢索索引i
和j
指向矩陣的最小值。
什麼,我想實現一個想法是BRI
from num in arr
where min = (from num in arr select min(num))
select i, j
您可以使用,其中包括索引,然後OrderBy
和First
拿到套指標與之一SelectMany
和Select
重載最小值。
var min = arr.SelectMany((subArr, i) => subArr.Select((value, j) => new { i, j, value }))
.OrderBy(x => x.value)
.First();
int firstIndex = min.i;
int secondIndex = min.j;
你也可以這樣做:
var result = from i in Enumerable.Range(0, arr.Length)
from j in Enumerable.Range(0, arr[i].Length)
orderby arr[i][j]
select new { i, j };
var r = result.FirstOrDefault();// here is the indexes of min value
讓我相信我明白你的代碼段(應該有一個LINQ碩士學位,有時可以是非常模糊的!) 'SelectMany'劃分鋸齒狀列'subArr'中的數組及其索引。對於每個'subArr',它'選擇'pair'值,j',其中j是當前數組中的索引,然後我們按值排序。爲什麼不使用'Min'而不是'OrderBy'?它會打破所有? – Fylax
@Fylax'Min(x => x.value)'只會返回最小的'value',而不是包含索引的匿名類。 – juharr
這很有道理! – Fylax