在 C# 中高效地读取.csv文件

本文关键字:读取 csv 文件 高效 | 更新日期: 2023-09-27 18:34:46

我正在使用这种方式读取巨大的csv文件(按文件读取约350K行(:

StreamReader readFile = new StreamReader(fi);
    string line;
    string[] row;
    readFile.ReadLine();
    while ((line = readFile.ReadLine()) != null)
    {
        row = line.Split(';');
        x=row[1];
        y=row[2];
        //More code and assignations here...
    }
    readFile.Close();
}

这里的重点是,逐行读取一个月中的每一天的巨大文件可能会很慢,我认为它一定是另一种更快完成的方法。

在 C# 中高效地读取.csv文件

方法 1

通过使用 LINQ:

var Lines = File.ReadLines("FilePath").Select(a => a.Split(';'));
var CSV = from line in Lines 
          select (line.Split(',')).ToArray();

方法 2

正如杰伊·里格斯(Jay Riggs(在这里所说

下面是一个优秀的类,它将使用数据结构将 CSV 数据复制到数据表中,以创建数据表:

用于平面文件的可移植且高效的通用解析器

它易于配置和使用。 我敦促你看看。

方法 3

滚动自己的CSV阅读器是浪费时间,除非您正在阅读的文件保证非常简单。请改用预先存在的、久经考验的实现。

在一个简单的例子中(没有引号,即 '"'在文件中(当您期望部分阅读时,您可能会发现有用的

  var source = File
    .ReadLines(fileName)
    .Select(line => line.Split(';'));

例如,如果您想了解 CSV 中是否有一行,使得 3D 列值等于 0

  var result = source
    .Any(items => items[2] == "0");