C# 从grades.txt文件读取成绩,并将最佳成绩保存到BestGrades.txt
我需要从grades.txt文件中读取最佳成绩,并将每个学生的最佳成绩保存在BestGrades.txt文件中。不幸的是,我只能在控制台上查看学生数据。 有人能帮我吗C# 从grades.txt文件读取成绩,并将最佳成绩保存到BestGrades.txt,c#,.net,txt,C#,.net,Txt,我需要从grades.txt文件中读取最佳成绩,并将每个学生的最佳成绩保存在BestGrades.txt文件中。不幸的是,我只能在控制台上查看学生数据。 有人能帮我吗 using System; using System.IO; namespace Projekt { class Program { static void Main(string[] args) { int counter = 0;
using System;
using System.IO;
namespace Projekt
{
class Program
{
static void Main(string[] args)
{
int counter = 0;
string line;
System.IO.StreamReader file =
new System.IO.StreamReader(@"C:\Users\eryks\Desktop\Grades.txt");
while ((line = file.ReadLine()) != null)
{
System.Console.WriteLine(line);
counter++;
}
file.Close();
}
}
}
Grades.txt:
1,Jan,Kowalski,Informatyka,5
2,Wiktoria,Prietz,Informatyka,6
3,Jakub,Mateja,Informatyka,3
id,name,lastname,school subject,grade
因此,您的问题是要求在没有提及模型的情况下对分数进行排序,我假设您的分数是CSV文件每行中的最后一个值。因此,我选择了一个简单的解决方案,即使用带有键和值的
SortedList
,这样分数变为整数,您的行是字符串类型
我已经为您的现有代码构建了解决方案,并提供了一些内联解释
代码如下:
SortedList<int, string> sortedList = new SortedList<int, string>();
while ((line = file.ReadLine()) != null)
{
System.Console.WriteLine(line);
// this is to prevent parsing the header
if (!line.StartsWith("id"))
{
// Extract the grade from the line
var s = line.Substring(1 + line.LastIndexOf(",", StringComparison.Ordinal));
// Parse the grade to integer
var grade = int.Parse(s);
// Adding the grade and line to our sorted list
sortedList.Add(grade, line);
}
counter++;
}
因此,根据您的输入,我得到了从低级到高级的有机有序输出:
3 3,Jakub,Mateja,Informatyka,3
5 1,Jan,Kowalski,Informatyka,5
6 2,Wiktoria,Prietz,Informatyka,6
我想如果您需要从高等级到低等级,只需在列表中添加OrderBy
:
sortedList.OrderBy(e => e.Value)
也就是说,我建议您为数据创建一个模型对象,并将其插入到对象列表中,然后对其进行排序。好多了
我所做的是一个概念性的解决方案,它有改进的地方。那部分留给你了。享受
sortedList.OrderBy(e => e.Value)