由于我是c#的初学者,我需要帮助! 。我有一个.csv文件,其中包含以下列中的学生详细信息,此处我需要的是基于个人评分的最高分,我需要获得如下输出: (/ * csv文件中的数据,例如每行和列单元格可能为100 * /)
名称,数学,科学,英语(csv的标题)
Akash,80,67,54
Manoj,64,56,72
Subas,78,84,63
我可以进行读取操作并显示整行。但我的问题是我想从每个科目的最高分中显示学生姓名和科目。
示例输出:
英语 - Manoj
数学 - Subas
科学 - 阿卡什
我被困在中间,没有使用VB的任何答案都非常感激。
答案 0 :(得分:0)
我不知道您的需求描述与样本输出的匹配程度。以下是获得每个科目和最高分的学生的代码。
List<string[]> data = new List<string[]>();
using (StringReader sr = new StringReader(csvText))
{
while (sr.Peek() > 0)
{
data.Add(sr.ReadLine().Split(','));
}
}
//Iterates through columns, skipping first one (names)
List<string> output = new List<string>();
for (int i = 1; i < data[0].Count(); i++)
{
string subjectName = data[0][i];
Dictionary<string,int> grades = new Dictionary<string, int>();
//Iterates through rows, skipping first one (headers)
for (int j = 1; j < data.Count; j++)
{
grades.Add(data[j][0],Convert.ToInt32(data[i][j]));
}
output.Add(subjectName + " - " + grades.Aggregate((l, r) => l.Value > r.Value ? l : r).Key);
}
相信这个问题中的答案为聚合linq:Get key of highest value in Dictionary