-5

C#初心者なのでお手柔らかにお願いします。変換スクリプトで c# を使用しており、このようなリストで 6 番目に高い値を見つける必要があります。

57
50
90
60
57
93
100
53
73
87
77

を使用して文字列配列に変更できます

string [] arr = args.Content.Split("\r\n".ToCharArray());

しかし、私はそこから迷子になります

ありがとうポール・フォン

4

3 に答える 3

3

数値で並べ替えたい場合は、文字列をint最初に変換する必要があります。次にEnumerable.OrderByDescendingand を使用できます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));

(無効な形式または項目が少なすぎる場合の例外処理を省略)

于 2013-07-03T21:56:12.117 に答える
1

次のように LINQ を使用できます。

var res = args.Content.Split("\r\n".ToCharArray())
     .Select(int.Parse)
     .OrderBy(x=>x)
     .Skip(5)
     .FirstOrDefault();
于 2013-07-03T21:56:48.347 に答える
0

まず、数値を に変換する必要があります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];
于 2013-07-03T21:53:28.063 に答える