【问题标题】:how to read a csv file and display row values and column values如何读取 csv 文件并显示行值和列值
【发布时间】:2016-11-20 07:09:33
【问题描述】:

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

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

阿卡什,80、67、54

马诺伊,64、56、72

苏巴斯,78、84、63

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

样本输出:

英语- Manoj

数学 - Subas

科学-阿卡什

我被困在中间,非常感谢任何不使用 VB 的答案。

【问题讨论】:

    标签: c# csv


    【解决方案1】:

    我看不出您的需求描述与示例输出的匹配程度。这是获取每个科目和最高成绩的学生的代码。

    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);
    }
    

    感谢 Aggregate linq 这个问题的答案:Get key of highest value in Dictionary

    【讨论】:

    • 非常感谢 Thor !!!...我想这是可能的....首先我想到了将 names 列单独放在 List 中,后来数字我想到了 List 中的标记列...最后我提出了获得最高分和名称的逻辑部分...无论如何感谢您的帮助:D
    • 无论如何也要在此处包含您的解决方案,以便其他人可以选择他们喜欢的解决方案。
    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 2017-12-04
    相关资源
    最近更新 更多