C# 如何在执行计算时忽略二维数组中的值

C# 如何在执行计算时忽略二维数组中的值,c#,C#,给定任何二维数组,如果存在多个最小值/最大值,则忽略每个数组中的最小值和最大值,仅忽略一个。然后计算剩余值之和 int[,] scores = { { 5, 8, 9, 3, 8, 5}, { 3, 9, 6, 3, 9, 5, 7} }; 第一个数组的总数将返回26 第二个数组的总数将返回30 存储这些总数。我怀疑您的问题是多维数组还是数组

给定任何二维数组,如果存在多个最小值/最大值,则忽略每个数组中的最小值和最大值,仅忽略一个。然后计算剩余值之和

int[,] scores = {
                          { 5, 8, 9, 3, 8, 5},
                          { 3, 9, 6, 3, 9, 5, 7}
                         };
第一个数组的总数将返回26 第二个数组的总数将返回30


存储这些总数。

我怀疑您的问题是多维数组还是数组数组交错数组。多维数组中不能有不同的维度

我假设你有一个数组,现在你可以这样做了

    int[][]  numbers2 = new int[][]
    {
        new int[] {1, 4,5,6, 10}, 
        new int[] {1,-2,3, 10, 1, }, 
        new int[] {-7,-8,-9, -1, 0}
    };

    var sum_array =numbers2.Select(x => x.OrderBy(c=>c)
                                         .Skip(1)
                                         .Take(x.Length-2)
                                         .Sum(c=>c)     
                                  );
输出:

在这种情况下,如果要处理多维数组,请执行此操作

    int[,]  numbers = new int[3,5]
    {
        {1, 4,5,6, 10}, 
        {1,-2,3, 10, 1, }, 
        {-7,-8,-9, -1, 0}
    };


    var row_sum  = numbers.Cast<int>()      
    .Select((x, i) => new { Index = i, Value = x })
    .GroupBy(x => x.Index / (numbers.GetUpperBound(1) +1))
    .Select(x => x.OrderBy(c=>c.Value).Skip(1).Take(numbers.GetUpperBound(1)-1).Sum(c=>c.Value))
    .ToArray(); 
这两种情况下,您得到相同的输出


勾选

是否确实要排除该项目,还是仅根据上述标准计算总和?另外,标题中提到的排序有什么关系?这不是一个发布家庭作业问题并期望为您编写答案的地方。我有排序的原因,我认为解决方法是将数组按升序排序,然后在对数组求和时忽略第一个和最后一个值。如果结果可以按照上述标准计算,则不需要排除该项目。只是不太确定我如何解决这个问题。我建议你开始思考如何解决你的家庭作业,试着写下一些代码,如果你有任何具体问题,那么你可以发布一个有一些进展的问题。
    int[,]  numbers = new int[3,5]
    {
        {1, 4,5,6, 10}, 
        {1,-2,3, 10, 1, }, 
        {-7,-8,-9, -1, 0}
    };


    var row_sum  = numbers.Cast<int>()      
    .Select((x, i) => new { Index = i, Value = x })
    .GroupBy(x => x.Index / (numbers.GetUpperBound(1) +1))
    .Select(x => x.OrderBy(c=>c.Value).Skip(1).Take(numbers.GetUpperBound(1)-1).Sum(c=>c.Value))
    .ToArray();