使用Linq查找具有最大长度的数组

doo*_*bop 0 c# linq

我需要在数组列表中找到最大的数组.使用基本技术,我可以做到这一点

        List<int[]> intArrayList;
        ...
        int largestArrayIndex = 0;
        for (int i = 1; i < intArrayList.Count; i++)
        {
            if (intArrayList[largestArrayIndex].Length < 
                intArrayList[i].Length)
            {
                largestArrayIndex = i;
            }
        }
Run Code Online (Sandbox Code Playgroud)

但是,我很好奇是否有更简洁的方法与Linq这样做?而且,两者之间会有任何性能差异吗?

编辑: 我想要最大的数组.所以,如果我有一个{int [5],int [7],int [9],int [3]的列表,我想要int [9]数组的索引或引用.

谢谢.

Luc*_*rin 5

你可以这样做:

var longest = intArrayList.Aggregate((i1,i2) => i1.Length > i2.Length ? i1 : i2);
Run Code Online (Sandbox Code Playgroud)

性能方面,它只会迭代列表一次,所以我会说它与你的代码几乎相同.

编辑:只是想澄清我的代码返回最长的数组,而不是最长的数组.

干杯