使用LINQ获取二维数组的最小值和最大值

dev*_*xer 10 c# linq arrays multidimensional-array

你如何使用LINQ获得二维数组的最小值和最大值?要清楚,我的意思是数组中所有项目的最小值/最大值(不是特定维度的最小值/最大值).

或者我只是要以老式的方式循环?

Lee*_*Lee 27

由于Array实现了IEnumerable你可以这样做:

var arr = new int[2, 2] {{1,2}, {3, 4}};
int max = arr.Cast<int>().Max();    //or Min
Run Code Online (Sandbox Code Playgroud)

  • 对于未来的搜索者,http://stackoverflow.com/a/641565 for Jagged Arrays ie.`int [] [] SomeArray = ...;`,使用`var Flattened = SomeArray.SelectMany(x => x)`聚合枚举数.然后你可以做`Flattened.Max()`例如. (5认同)
  • Josh:纠正我,如果我错了,但是这看起来对我来说,你会将整个阵列复制到另一个扁平阵列中,只是为了进行最大限度的搜索,这首先导致复制开销,然后是另一个O(n)和因此,对于这样一个简单的问题,整体复杂性很差.有时优雅和简洁并不是一切. (2认同)

Mar*_*ers 8

这似乎有效:

IEnumerable<int> allValues = myArray.Cast<int>();
int min = allValues.Min();
int max = allValues.Max();
Run Code Online (Sandbox Code Playgroud)