按值对文本文件中的行进行排序

Sort lines in a text file by value

我希望 WPF 应用程序节省的时间类似于排名中的应用程序。时间和尝试次数不是要列出的问题,但是当我想在文本文件中对其进行排序时会出现问题。用户将能够在文本文件中打开排行榜,当应用程序完成时,图表(文本文件)将打开并显示用户的时间。

 private void writeText(string strPath, TimeSpan tsDuration)
    {
        using (StreamWriter str = new StreamWriter(strPath, true))
        {
            str.WriteLine(tsDuration / suma);
            //duration= time of the game
          //suma= number of attempts
        }
    }
readonly string path = @"C:\Users\info\Desktop\žebříček.txt";
TimeSpan duration = TimeSpan.FromMilliseconds(mt.ElapsedMilliseconds);//this is from other methods

图片是现在存储的样子:

但我更希望这样存储,其他尝试按时间值排序:

每次申请完成,用户的新时间应该按照快慢排序。 我很乐意提供任何建议

谢谢

我相信有很多更聪明的方法可以达到相同的结果,但一个非常简单的方法是:

  • 读取文件内容
  • 将内容分配给列表
  • 将您的值添加到列表中
  • 使用 linq 对列表进行相应排序
  • 将列表写回文件

示例:

using System.Collections.Generic;
using System.IO;
using System.Linq;

private void WriteText(string strPath, TimeSpan tsDuration)
{
    //Create new list of type 'TimeSpan'
    var list = new List<TimeSpan>();

    //Read the contents of the file and assign to list
    string line;
    using (var sr = new StreamReader(strPath))
    {
        while ((line = sr.ReadLine()) != null)
        {
            list.Add(TimeSpan.Parse(line));
        }
    }

    //Add your time value to the list
    list.Add(tsDuration);

    //Order the list in descending order - use OrderBy for ascending
    list.OrderByDescending(i => i);

    //Write contents back to file - note: append = false
    using StreamWriter str = new StreamWriter(strPath, false);
    foreach (var item in list)
    {
        str.WriteLine(item);
    }
}

readonly string path = @"C:\Users\info\Desktop\žebříček.txt";
TimeSpan duration = TimeSpan.FromMilliseconds(mt.ElapsedMilliseconds);//this is from other methods