c#-LINQ查找2D交错数组最小值,返回索引

c#-LINQ查找2D交错数组最小值,返回索引,c#,linq,C#,Linq,我有一个标准的2D锯齿阵列int[][]arr 让我们调用i和j行和列的索引 我想通过LINQ检索指向矩阵最小值的索引I和j 我想要实现的一个想法是bri from num in arr where min = (from num in arr select min(num)) select i, j 您可以使用包含索引的SelectMany和Select重载,然后使用OrderBy和First来获取具有最小值的一组索引 var min = arr.SelectMany((subArr, i)

我有一个标准的2D锯齿阵列
int[][]arr

让我们调用
i
j
行和列的索引

我想通过LINQ检索指向矩阵最小值的索引
I
j

我想要实现的一个想法是bri

from num in arr
where min = (from num in arr select min(num))
select i, j

您可以使用包含索引的
SelectMany
Select
重载,然后使用
OrderBy
First
来获取具有最小值的一组索引

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
将锯齿状数组划分为列
subar
及其索引。对于每个
subar
it
选择
s对
值,j
,其中j是当前数组中的索引,然后我们按值排序。为什么不使用
Min
而不是
OrderBy
?这会破坏一切?@Fylax
Min(x=>x.value)
只会返回最小的
值,而不会返回包含索引的匿名类。这很有意义@Fylax您还可以查看包含
MinBy
扩展方法的库,该扩展方法将在这里工作,而不是
OrderBy
首先
。非常感谢,我将查看它。实际上,这不是我的全部问题,而是一个简化版本,让我了解think是否可以通过LINQ工作,或者我是否需要老式的嵌套循环