【发布时间】:2011-03-04 05:12:12
【问题描述】:
如何使用 LINQ 获得二维数组的最小值和最大值?需要明确的是,我的意思是数组中所有项目的最小值/最大值(不是特定维度的最小值/最大值)。
还是我只需要循环使用老式的方式?
【问题讨论】:
标签: c# linq arrays multidimensional-array
如何使用 LINQ 获得二维数组的最小值和最大值?需要明确的是,我的意思是数组中所有项目的最小值/最大值(不是特定维度的最小值/最大值)。
还是我只需要循环使用老式的方式?
【问题讨论】:
标签: c# linq arrays multidimensional-array
由于 Array 实现了IEnumerable,你可以这样做:
var arr = new int[2, 2] {{1,2}, {3, 4}};
int max = arr.Cast<int>().Max(); //or Min
【讨论】:
int[][] SomeArray = ...;,使用聚合枚举数的var Flattened = SomeArray.SelectMany(x => x)。然后你可以只做Flattened.Max() 例如。
这似乎有效:
IEnumerable<int> allValues = myArray.Cast<int>();
int min = allValues.Min();
int max = allValues.Max();
【讨论】:
这里是变种:
var maxarr = (from int v in aarray select v).Max();
其中 aarray 是 int[,]
【讨论】:
您可以实现List<List<type>> 并在foreach 循环中找到最小值和最大值,并将其存储到List。然后,您可以从一维列表中所有值的列表中轻松找到Min() 和Max()。
这是我首先想到的,我自己对此很好奇,我想看看谷歌是否可以采用更简洁的方法。
【讨论】: