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 番目の要素、つまり 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];