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

时间:2016-07-17 17:09:07

标签: c# csv

由于我是c#的初学者,我需要帮助! 。我有一个.csv文件,其中包含以下列中的学生详细信息,此处我需要的是基于个人评分的最高分,我需要获得如下输出: (/ * csv文件中的数据,例如每行和列单元格可能为100 * /)

名称,数学,科学,英语(csv的标题)

Akash,80,67,54

Manoj,64,56,72

Subas,78,84,63

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

示例输出:

英语 - Manoj

数学 - Subas

科学 - 阿卡什

我被困在中间,没有使用VB的任何答案都非常感激。

1 个答案:

答案 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