如何通过streamreader进行阅读和排序



我正在制作一个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();

然后您可以浏览分数并显示它们,但是

相关内容

  • 没有找到相关文章

最新更新