2016-04-19 59 views
0

我正在做一個passaparola比賽,在比賽中我保存的暱稱以及與流作家的暱稱比分結束,比分如何通過StreamReader的閱讀和整理

我試圖做一個排行榜,但不知道如何在保存時或保存後將它們從高到低排序。

此外,要顯示他們在我寫這個標籤上;

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

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

其寫入文本file.Anyway 第一行如何排序和他們的標籤寫?

回答

1

排序的數組,然後使用foreach循環來顯示結果:

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

不能排序爲您從流讀取讀數。在將它們保存到文件之前,您必須對值進行排序,或者將它們全部讀取,然後在顯示它們之前進行排序。

閱讀所有這些,然後排序可能看起來像:

//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

是LINQ的OrderBy擴展方法適合您的選項?例如像這樣:

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