按值对文本文件中的行进行排序
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
我希望 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