如何使用CSV Helper在c#中逐行阅读?

时间:2018-10-17 11:25:34

标签: c# .net csv csvhelper line-by-line

所以这是我当前正在使用的代码,但我不想专门创建自己的阅读器。我的问题是我想逐行读取完整的csv文件,但是文件内容会不时更改,因此它必须是通用的。

这是我目前正在使用的

try
{
    var Lines = File.ReadAllLines(path);
    var csvRawData = from line in Lines select (line.Split(',')).ToArray();
    var csvData = csvRawData.ToList();
    return csvData;
}
catch (Exception ex)
{                
    MessageBox.Show(ex.Message);
    Logger.Log(ex.Message, true);
    return null;
}

返回的csvData的类型为List。然后,我只是手动将内容与之分离。

2 个答案:

答案 0 :(得分:0)

您说的是CsvHelper,但是从您的代码来看,它似乎并没有真正在使用它。如果使用它,则可以使用GetField方法按索引的标头名称提取字段。查看文档以获取有关如何使用它的更多信息。 https://joshclose.github.io/CsvHelper/reading

答案 1 :(得分:0)

下面是逐行读取的示例,其中第二行与第一行具有不同的“类型”:

    using (StreamReader reader = new StreamReader(filePath))
    {
        using (CsvReader csv = new CsvReader(reader))
        {
            csv.Read();

            Type1 sample = new Type1();
            sample.Id = csv.GetField<int>(0);
            sample.Lines = csv.GetField<int>(1);

            csv.Read();

            Type2 sample2 = new Type2();
            sample2.Angle = csv.GetField<double>(0);
            sample2.Distance = csv.GetField<int>(1);
        }
    }