Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何找到列表中第六高的值_C#_Sorting - Fatal编程技术网

C# 如何找到列表中第六高的值

C# 如何找到列表中第六高的值,c#,sorting,C#,Sorting,我是新来C#所以请温柔一点。我在一个转换脚本中使用c#,我需要在这样的列表中找到第六高的值 57 50 90 60 57 93 100 53 73 87 77 我可以使用 string [] arr = args.Content.Split("\r\n".ToCharArray()); 但是我从那里迷路了 谢谢 Paul Fone首先,您需要将数字转换为int[]。您可以这样做: string[] strs = args.Content.Split("\r\n".ToCharArray())

我是新来C#所以请温柔一点。我在一个转换脚本中使用c#,我需要在这样的列表中找到第六高的值

57
50
90
60
57
93
100
53
73
87
77
我可以使用

string [] arr = args.Content.Split("\r\n".ToCharArray());
但是我从那里迷路了

谢谢
Paul Fone

首先,您需要将数字转换为
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]);
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];
var res = args.Content.Split("\r\n".ToCharArray())
     .Select(int.Parse)
     .OrderBy(x=>x)
     .Skip(5)
     .FirstOrDefault();

如果要对其进行数字排序,必须首先将字符串转换为
int
,然后可以使用
Enumerable.OrderByDescending
Enumerable.Skip(5)。取(1)


(省略了对无效格式或过少项的异常处理)

您可以使用LINQ,如下所示:

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]);
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];
var res = args.Content.Split("\r\n".ToCharArray())
     .Select(int.Parse)
     .OrderBy(x=>x)
     .Skip(5)
     .FirstOrDefault();

您的列表的数据类型是什么?(Int数组、string数组、string等)将每个数组转换为数字、放入数组、排序数组、取第六个元素-你在挣扎哪一部分?@user1734455如果你想让任何人帮助你,你必须更具体地说明你在挣扎什么。我在挣扎整个过程-需要来自ScratchBw的代码,您的示例可能会更好,因为第六高也是第六低。所有这些linq解决方案的唯一问题是,输入不好可能会影响结果。谢谢,但我会尝试回答3,因为我没有linq谢谢您。我试着这样做,但我得到了一个自定义脚本错误谢谢你的时间。我尝试过这个,但我得到了一个自定义脚本error@user1734455这段代码是如何运行的?C#脚本用于在一个名为VisualWebRipper的程序中转换网页和提取数据。帮助文件规定-C#和VB.NET脚本内容脚本必须有一个方法,如下所示。01.public static void ScriptMethod(WrContentScriptArguments args)02.{03.try 04.{05.}06.catch(异常exp)07.{08.args.WriteDebug(exp.Message);09.}10.}public static void ScriptMethod(WrContentScriptArguments arguments)脚本方法ScriptMethod必须有这个确切的名称和签名,所以只更改方法体。我认为应该在OrderBy方法之后使用.Reverse()来获得第六高的值。在问题73提供的例子中,恰好是第六高和第六低的数字。好的观点,谢谢,更正。谢谢,但我会尝试answer3@User:你还在用吗。网络2?否则你就有林克了。您可能需要使用System.Linq在文件中添加。但是,记住接受最好的答案(或者你选择的答案)。