2016-04-19 2 views
0

Делаю PassaParola игру, в конце игры я сохранить ник и забить с потоковыми писателем как прозвище; оценкаКак читать StreamReader и сортировать

Я пытаюсь сделать лидеров но не знать, как сортировать их по максимуму до минимума при сохранении или после него.

Также для отображения их на этикетках я написал это;

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

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

который записывает первую строку в тексте file.Anyway как я могу сортировать и записать их в метках?

ответ

1

Сортировка массива, а затем использовать цикл Еогеасп для отображения результатов:

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

Вы не можете сортировать, как вы читаете из потока Reader. Вам придется либо сортировать значения перед сохранением их в файл, либо прочитать их все, а затем отсортировать их перед их отображением.

Читая их все, то сортировка может выглядеть примерно так:

//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(); 

Затем вы можете пройти через десятки и отображать их, однако

1

Является ли метод OrderBy расширение LINQ вариант для вас? Например, например:

 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(); 
Смежные вопросы