LINQ查找二维锯齿数组最小值,返回索引

本文关键字:数组 最小值 索引 返回 二维 查找 LINQ | 更新日期: 2023-09-27 18:18:23

我有一个标准的2D锯齿数组int[][] arr

我们称ij为行和列的下标。

我想通过LINQ检索索引ij,它们指向矩阵的最小值。

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

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

LINQ查找二维锯齿数组最小值,返回索引

你也可以这样做:

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

您可以使用包含索引的SelectManySelect的重载,然后使用OrderByFirst的重载来获得具有最小值的索引集之一。

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;