作成したゲームのハイスコアファイルを並べ替える必要があります。
各ハイスコアには、名前、スコア、日付の変数があります。それぞれをリストに格納します。
以下は、各ハイスコアデータを保持する構造体です。
struct Highscore
{
public string Name;
public int Score;
public string Date;
public string DataAsString()
{
return Name + "," + Score.ToString() + "," + Date;
}
}
では、リスト内の各オブジェクトのスコア変数によってタイプHighscoresのリストをどのようにソートしますか?
どんな助けでもありがたいです:D
追加のメモリ(特にHighscoreは値型であるため)と、結果を再利用したい場合にToList()への呼び出しを必要とするLINQベースのソリューションを誰もが提案している理由はわかりません。最も簡単な解決策は、リストの組み込みのSortメソッドを使用することです
list.Sort((s1, s2) => s1.Score.CompareTo(s2.Score));
これにより、リストが並べ替えられます。
var sortedList = yourList.OrderBy(x => x.Score);
またはOrderByDescending
を使用して逆の方法でソートします
List<Highscore> mylist = GetHighScores();
var sorted = mylist.OrderBy(h=>h.Score);
これにより、スコアが最も高いリストが最初にソートされます。
IEnumerable<Highscore> scores = GetSomeScores().OrderByDescending(hs => hs.Score);