我正在制作一个passaparola游戏,在游戏结束时,我保存昵称并用流作者作为昵称进行评分;得分
我正在尝试制作排行榜,但不知道如何在储蓄时或储蓄后将其从高到低排序。
为了在标签上展示它们,我写了这篇文章;
string[] scoreArray;
string sc = sr.ReadLine();
scoreArray = sc.Split(';');
label2.Text = scoreArray[0];
label3.Text = scoreArray[1];
它在文本文件中写入第一行。无论如何如何将它们分类并写在标签中?
对数组进行排序,然后使用foreach循环显示结果:
string[] scoreArray;
string sc = sr.ReadLine();
scoreArray = sc.Split(';');
Array.Sort(scoreArray);
foreach (string s in scoreArray)
{
//Your code here.
}
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();
您不能在从流读取器读取时进行排序。您必须在将值保存到文件之前对其进行排序,或者在显示值之前先读取所有值然后进行排序。
阅读所有内容然后进行排序可能看起来像:
//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();
然后您可以浏览分数并显示它们,但是