2016-04-19 18 views
0

Ich mache ein passaparola Spiel, am Ende des Spiels i speichern Spitznamen und punkten mit Stromschreiber als Spitzname lesen;Wie von Stream und Art

Score Ich versuche, eine Rangliste zu machen, aber nicht wissen, wie man sie am oder nach dem Speichern nach oben oder unten sortiert.

Auch um sie auf Etiketten anzuzeigen, schrieb ich dies;

 string[] scoreArray; 
     string sc = sr.ReadLine(); 

     scoreArray = sc.Split(';'); 
     label2.Text = scoreArray[0]; 
     label3.Text = scoreArray[1]; 

, die in Text file.Anyway erste Zeile schreibt, wie kann ich sie in Etiketten sortieren und schreiben?

Antwort

1

sortieren das Array und dann verwenden, um eine foreach-Schleife die Ergebnisse anzuzeigen:

string[] scoreArray; 
string sc = sr.ReadLine(); 
scoreArray = sc.Split(';'); 
Array.Sort(scoreArray); 
foreach (string s in scoreArray) 
{ 
    //Your code here. 
} 
0

Sie können nicht sortieren, wie Sie aus einem Stream-Reader gerade lesen. Sie müssen entweder die Werte sortieren, bevor Sie sie in der Datei speichern, oder sie alle lesen und dann sortieren, bevor Sie sie anzeigen.

Lesen sie alle dann könnte so etwas aussehen Sortierung:

//define a class to store your scores 
public class Score 
{ 
    public string Username { get; set; } 
    public decimal Score { get; set; } 

    public Score() 
    { 

    } 
} 

//then reading the values 
var scores = new List<Score>(); 
string line = ""; 
while ((line = sr.ReadLine()) != null) 
{ 
    var lineArray = line.Split(';'); 
    scores.Add(new Score{ Username = line[0], Score = line[1] }); 
} 

// then sort the list using linq 
scores = scores.OrderByDescending(x => x.Score).ToList(); 

Dann können Sie die Bewertung durchlaufen und zeigt sie jedoch

1

Ist OrderBy Erweiterungsmethode von LINQ eine Option für Sie? Zum Beispiel so:

 string line = "300;100;60;200;100;150"; 
     string[] scoreArray; 
     int[] orderedScoreArray; 

     scoreArray = line.Split(';'); 
     orderedScoreArray = (from score in scoreArray 
      orderby Convert.ToInt32(score) 
      select Convert.ToInt32(score)).ToArray(); 

     for (int i = 0; i < orderedScoreArray.Length; i++) 
     { 
      Console.WriteLine(orderedScoreArray[i]); 
     } 

     Console.ReadKey();