C#在2D数组中查找3个最大值

J T*_*aff 0 c# arrays multidimensional-array

目前,我有一个已经分配了随机值的2D数组.我知道如何用这样的东西找到最大的值:

public static int Largest( int[,] C)
{
    int largest = 0;
    for (int row = 0; row < C.GetLength(0); row++)
    {
        for (int col = 0; col < C.GetLength(1); col++)
        {
            if( largest < C[ row, col])
            {
                largest = C[ row, col];
            }
        }
    }
    return largest;
}
Run Code Online (Sandbox Code Playgroud)

但我想找到三个最大的值并返回总和.我不一定对我如何找到它有任何限制,但它是否会成为我写的最大方法的另一种方法?

Gus*_*man 5

在C#中你有linq可以轻而易举地做到这一点:

var sum = C.Cast<int>().OrderByDescending(i => i).Take(3).Sum();
Run Code Online (Sandbox Code Playgroud)

就是这样,它将数组转换为一维可枚举,从最大到小的顺序排序,取前三个元素并对它们求和.