C# 查找整数数组中的第n个最大值

C# 查找整数数组中的第n个最大值,c#,linq,C#,Linq,我需要能够在int数组中找到第n个最大的数字,我已经有了一个linq语句,它返回了一些东西,但没有传递设置的用例。数组是: var numbers = new[] { 5, 7, 5, 3, 6, 7, 9 }; 我的代码是: var result = numbers.GroupBy(x => x) .OrderByDescending(group => group.Key) .SkipWhile(group =&

我需要能够在
int
数组
中找到第n个最大的数字,我已经有了一个
linq
语句,它返回了一些东西,但没有传递设置的用例。
数组是:

var numbers = new[] { 5, 7, 5, 3, 6, 7, 9 };
我的代码是:

  var result = numbers.GroupBy(x => x)
                .OrderByDescending(group => group.Key)
                .SkipWhile(group =>
                {
                    n -= group.Count();
                    return n > 0;
                })
                .First()
                .ToArray();
我不明白为什么我没有得到预期的结果

  result[0] == 9
  result[1] == 7

您只需使用
Take()

var result = numbers.GroupBy(x => x)
                    .OrderByDescending(group => group.Key)
                    .Take(n)
                    .Select(group => group.Key)
                    .ToArray();


或者使用
跳过(n-1)。如果您打算只获取第n项,则取(1)

您将获得什么?结果[0]==7结果[1]==7对于
n
?无论如何,您正在跳过
n
第一个元素,因此对于任何
n>0
您都不会得到
9
。可能的重复项