2011-06-21 11 views
17

私が書いたゲームのために最高のファイルをソートする必要があります。構造体myList <>に格納された整数でリスト<>をソートする方法

各ハイスコアには、名前、スコア、および日付変数があります。私は各リストをリストに保存します。

ここに、各ハイスコアデータを保持する構造体があります。

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

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

それでは、どのように私は、リスト内の各オブジェクトのスコア変数で型ハイスコ​​アのリストを並べ替えるでしょうか?

すべてのヘルプは高く評価されています

+0

実際にオブジェクトを['List '](http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx)に保存した場合、['Sort()']( http://msdn.microsoft.com/en-us/library/3da4abas.aspx)method ... –

答えて

46

私は、誰もが(ハイスコアが値型で、特に以来)、追加のメモリを必要とするLINQベースのソリューションを提案している理由を知っていないと:

+0

トリックをした甘い:) – Lucidity

+0

+1トリックをした甘い:) – mjb

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

Dまたは反対の方法でソートするOrderByDescendingを使用

1
List<Highscore> mylist = GetHighScores(); 

var sorted = mylist.OrderBy(h=>h.Score); 
2

使用LINQ:

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

Here約学ぶのに最適なリソースです。異なるLINQ演算子。

IEnumerable<Highscore> scores = GetSomeScores().OrderByDescending(hs => hs.Score); 
1

これは最初の最高得点でリストをソートします結果を再利用する場合はToList()を呼び出します。最も簡単な解決策は、リストの組み込みソートメソッドを使用することです。

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

これにより、リストが適切にソートされます。

+0

'OrderBy()'の呼び出し結果はリストではありません。 –

+0

@ジェフ:あなたはもちろん正しい!編集、ありがとう:-) –

関連する問題

 関連する問題