web-dev-qa-db-ja.com

構造体my List <>に格納されている整数でリスト<>をソートする方法

作成したゲームのハイスコアファイルを並べ替える必要があります。

各ハイスコアには、名前、スコア、日付の変数があります。それぞれをリストに格納します。

以下は、各ハイスコアデータを保持する構造体です。

struct Highscore
{
    public string Name;
    public int Score;
    public string Date;

    public string DataAsString()
    {
        return Name + "," + Score.ToString() + "," + Date;
    }
}

では、リスト内の各オブジェクトのスコア変数によってタイプHighscoresのリストをどのようにソートしますか?

どんな助けでもありがたいです:D

18
Lucidity

追加のメモリ(特にHighscoreは値型であるため)と、結果を再利用したい場合にToList()への呼び出しを必要とするLINQベースのソリューションを誰もが提案している理由はわかりません。最も簡単な解決策は、リストの組み込みのSortメソッドを使用することです

list.Sort((s1, s2) => s1.Score.CompareTo(s2.Score));

これにより、リストが並べ替えられます。

49
Stilgar
var sortedList = yourList.OrderBy(x => x.Score);

またはOrderByDescendingを使用して逆の方法でソートします

5
Stecya

LINQを使用する:

myScores.OrderBy(s => s.Score);

ここ は、さまざまなLINQ演算子について学ぶための優れたリソースです。

1
Oded
List<Highscore> mylist = GetHighScores();

var sorted = mylist.OrderBy(h=>h.Score);
0
Steve B

これにより、スコアが最も高いリストが最初にソートされます。

IEnumerable<Highscore> scores = GetSomeScores().OrderByDescending(hs => hs.Score);
0
Fredrik Mörk