使用linq c#在值列表中查找第二个Max

如何使用LinqC#在值列表中找到第二个最大数字?

例如,我有这个列表:

 List ListOfNums = new List {1, 5, 7, -1, 4, 8}; 

有没有一种方法可以获得列表中第二个最大值7?

 var secondMax = ListOfNums.OrderByDescending(r => r).Skip(1).FirstOrDefault(); 

要么

 var secondMax = ListOfNums.OrderByDescending(r=> r).Take(2).LastOrDefault(); 

只需将其转换为数组并获取第二个元素

  List ListOfNums = new List { 1, 5, 7, -1, 4, 8 }; var sndmax = ListOfNums.OrderByDescending(x => x).ToArray()[1]; 

以下是使用List.Sort方法的另一种方法:

 ListOfNums.Sort(); var max = ListOfNums[1];