C# 如何读取csv文件并显示行值和列值

C# 如何读取csv文件并显示行值和列值,c#,csv,C#,Csv,因为我是c语言的初学者,我需要帮助。我有一个.csv文件,包含以下列中的学生详细信息,我在这里需要的是基于个人的最高分数,我需要得到如下输出: (/*csv文件中的数据在每行和每列单元格中可能为100*/) 姓名、数学、科学、英语(csv标题) 阿卡什,80,67,54 Manoj,64,56,72 苏巴斯,78,84,63 我可以执行读取操作并显示整行。但我的问题是,我想从每个科目的最高分数中显示学生和科目的名称 样本输出: 英语-Manoj 数学-Subas 科学-阿卡什 我被夹在中间,任何

因为我是c语言的初学者,我需要帮助。我有一个.csv文件,包含以下列中的学生详细信息,我在这里需要的是基于个人的最高分数,我需要得到如下输出: (/*csv文件中的数据在每行和每列单元格中可能为100*/)

姓名、数学、科学、英语(csv标题)

阿卡什,80,67,54

Manoj,64,56,72

苏巴斯,78,84,63

我可以执行读取操作并显示整行。但我的问题是,我想从每个科目的最高分数中显示学生和科目的名称

样本输出:

英语-Manoj

数学-Subas

科学-阿卡什


我被夹在中间,任何不使用VB的答案都会受到高度赞赏。

我看不出您的需求描述与示例输出如何匹配。下面是获取每个科目以及该科目中成绩最高的学生的代码

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);
}
列表数据=新列表();
使用(StringReader sr=新StringReader(csvText))
{
而(sr.Peek()>0)
{
Add(sr.ReadLine().Split(',');
}
}
//遍历列,跳过第一列(名称)
列表输出=新列表();
对于(int i=1;il.Value>r.Value?l:r).Key);
}

这道题的答案加起来很好,linq:

非常感谢Thor!!!。。。我想这是可能的。。。。首先,我想到了在列表中单独使用“名称”列,后来为了数字,我想到了在列表中使用“标记”列。。。最后我把逻辑部分放在获得最高分数和名字上。。。无论如何,感谢您的帮助:DBy尽一切可能将您的解决方案也包括在这里,这样其他人就可以选择一个让他们喜欢的解决方案。