我是 C# 新手,所以请温柔一点。我在转换脚本中使用 c#,我需要在这样的列表中找到第 6 个最高值
57
50
90
60
57
93
100
53
73
87
77
我可以通过使用将其更改为字符串数组
string [] arr = args.Content.Split("\r\n".ToCharArray());
但我从那里迷路了
谢谢保罗·冯
如果要按数字对其进行排序,则必须int
先将字符串转换为,然后可以使用Enumerable.OrderByDescending
and Enumerable.Skip(5).Take(1)
:
IEnumerable<int> ints = arr.Select(int.Parse)
.OrderByDescending(i => i)
.Skip(5).Take(1);
Console.Write("Sixth element is: " + ints.First());
或从有序序列创建一个新列表,然后使用Enumerable.ElementAt
:
List<int> ints = arr.Select(int.Parse).OrderByDescending(i => i).ToList();
Console.Write("Sixth element is: " + ints.ElementAt(5));
(省略了无效格式或项目太少的异常处理)
您可以使用 LINQ,如下所示:
var res = args.Content.Split("\r\n".ToCharArray())
.Select(int.Parse)
.OrderBy(x=>x)
.Skip(5)
.FirstOrDefault();
首先,您需要先将数字转换为int[]
. 你可以这样做:
string[] strs = args.Content.Split("\r\n".ToCharArray());
int[] ints = new int[strs.Length];
for (int i = 0; i < strs.Length; i++)
ints[i] = int.Parse(strs[i]);
然后,您可以使用Array.Sort(ints);
对它们进行实际排序。然后,您用于int result = ints[ints.Length - 6 - 1];
获取排序数组中倒数第六个元素:即第 6 个最高元素。
完成的代码如下所示:
string[] strs = args.Content.Split("\r\n".ToCharArray());
int[] ints = new int[strs.Length];
for (int i = 0; i < strs.Length; i++)
ints[i] = int.Parse(strs[i]);
Array.Sort(ints);
int result = ints[ints.Length - 6 - 1];