为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 C# 中按分数对写入文本文件的数据进行排序

如何在 C# 中按分数对写入文本文件的数据进行排序

C#
偶然的你 2022-11-21 15:44:26
我正在为我的计算课程做一个测验应用程序,我正在结束屏幕上工作,在结束屏幕上我有一个名为 savescore() 的方法savescore() 用于将用户的用户名、分数和时间保存到文本文件中。savescore() 方法完美地将用户详细信息保存到名为 scores 的文本文件中,但我的问题是,当我将用户详细信息写入文本文件时,我希望将数据按分数降序写入分数文本文件中,我不知道该怎么做。 private void SaveScore()    {        string file = @"..\..\textfiles\scores.txt";        try        {            //            // Create file if not exists            //            if (!File.Exists(file))            {                File.Create(file).Dispose();            }            //            // Create DataTable            //            DataColumn nameColumn = new DataColumn("name", typeof(String));            DataColumn scoreColumn = new DataColumn("score", typeof(int));            DataColumn timeColumn = new DataColumn("time", typeof(long));            DataTable scores = new DataTable();            scores.Columns.Add(nameColumn);            scores.Columns.Add(scoreColumn);            scores.Columns.Add(timeColumn);            //            // Read CSV and populate DataTable            //            using (StreamReader streamReader = new StreamReader(file))            {                streamReader.ReadLine();                while (!streamReader.EndOfStream)                {                    String[] row = streamReader.ReadLine().Split(',');                    scores.Rows.Add(row);                }            }            Boolean scoreFound = false;            //            // If user exists and new score is higher, update             //            foreach (DataRow score in scores.Rows)            {                if ((String)score["name"] == player.Name)                {                    if ((int)score["score"] < player.Score)                    {                        score["score"] = player.Score;                        score["time"] = elapsedtime;                    }                    scoreFound = true;                    break;                }            }所以我有人可以编辑我当前的代码,以根据分数的降序保存用户详细信息,这将是非常棒的,在此先感谢。
查看完整描述

1 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

您可以使用DataTable.Select 方法来实现。使用 select 方法,您可以过滤和排序表中的行。下面是foreach使用该方法对数据进行排序的已更改语句。


foreach (DataRow score in scores.Select(null, "score DESC"))

{

   stringBuilder.AppendLine(score["name"] + "," + score["score"] + "," + score["time"]);

}


查看完整回答
反对 回复 2022-11-21
  • 1 回答
  • 0 关注
  • 56 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信