c# - 如何在 C# 中获取二维数组列表的最大值/最小值

标签 c# arrays list

我有一个像这样的二维数组列表:

    static void Main(string[] args) {
        List<int[,]> kidsL = new List<int[,]>();
        int[,] square1 = new int[8, 8];
        int[,] square2 = new int[8, 8];
        int[,] square3 = new int[8, 8];
        for (int i = 0; i < 8; i++)
            for (int j = 0; j < 8; j++) {
                square1[i, j] = 1;
                square2[i, j] = 2;
                square3[i, j] = 3;
            }
        kidsL.Add(square1);
        kidsL.Add(square2);
        kidsL.Add(square3);
        Console.WriteLine();
        Console.Read();
    }

我想确定每个数组的总和并找到最大值/最小值(在本例中最大值是 192)。

有没有一种简单的方法可以做到这一点,还是我必须循环使用老式的方法?

最佳答案

那么,你可以使用下面的代码来获取 IEnumarable<int>来自int[,]

var enumarable = from int item in square2
                 select item;

此外,您还可以使用Cast<int>()方法以解开 int[,]IEnumarable<int> .

然后你可以使用Max()Min() linq 方法。

var min = kidsL.Min(x => (from int item in x select item).Sum());
var max = kidsL.Max(x => (from int item in x select item).Sum());
// or
var min = kidsL.Min(x => x.Cast<int>().Sum())

var Max = (from int[,] array in kidsL
           select (from int item in array select item).Sum())
          .Max();

更新

from int[,] array in kidsL select (from int item in array select item).Sum()查询返回 IEnumarable<int>其中包含总和。为了获得 max 的索引,您应该使用 ToList 将 IEnumarable 转换为数组或列表或ToArray() .

var sumList = (from int[,] array in kidsL
               select(from int item in array select item).Sum())
               .ToList();

var maxSum = sumList.Max();
var maxInd = sumList.IndexOf(maxSum);

sumList是一个整数列表并包含总和。那么你可以使用Max获得最大和和 IndexOf 的方法获取最大值的索引。

关于c# - 如何在 C# 中获取二维数组列表的最大值/最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35998706/

相关文章:

c# - 将数组转换为内联字符串

c# - Windows是否有一些内置的数据库引擎?

C# 不能使用 **as** 将基类转换为派生类

java - 为什么我的 java 数组不允许用户输入每个值?

html - 为什么我的 <li> 类型没有显示?

c# - 用于选择下一个兄弟的 Xpath

java - 有没有办法在 delphi(Pascal 对象)中像在 java 中那样为每个对象创建一个?

javascript - 扩展和重新排序对象数组

python - 当我将列表分配给变量时,为什么 Pycharm 会给我一个提示 "this list creation could be rewritten as a list literal"?

python - 将内部列表的元素相乘作为列表理解