c# - 在 C# 中异步解析 CSV 文件的最佳方法是什么

标签 c# csv asynchronous

<分区>

我必须解析大型 CSV 文件并提高吞吐量,我正在使用 async 和 await。我目前的做法是逐行读取文件并执行我自己的解析:

using (var streamReader = File.OpenText(fileName))
{
  string line;
  while ((line = await streamReader.ReadLineAsync()) != null)
  {
    // Parse line ...
  }
}

然而,正确解析 CSV 文件并不容易,例如当字符串包含逗号等时

我一直无法找到性能良好且支持异步和等待的 CSV 解析器。如何在不从头编写解析器的情况下使用异步 I/O 高效地解析 CSV 文件?

最佳答案

您可以看看非常有用且易于使用的 CsvHelper library (也可以作为 NuGet package 获得)。这甚至包括内置的 mapping将 CSV 记录映射到对象的功能。

CSV Helper A .NET library for reading and writing CSV files. Extremely fast, flexible and easy to use. Supports reading and writing of custom class objects.

它不是异步的(如在 async/await 中),但正如评论中所建议的那样,您可以围绕它创建自己的异步包装器。

关于c# - 在 C# 中异步解析 CSV 文件的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27681849/

相关文章:

c# - 如何从 url 读取 csv 文件?

c# - 在用户控件 asp.net 中声明事件?

php - 将csv文件导入MYSQL的最快方法

使用 XSLT 将 XML 转换为 CSV 需要帮助

javascript - sqlite3 - 异步调用的 promise

c# - 两条线段在 c# 或 vb.net 中使用 xna 相交吗?

c# - 在 SQL Server Management Studio 中创建一个新的菜单项

python - 从文件中读取的 CSV 分隔符

javascript - node.js async.maplimit() 将额外参数传递给处理函数

c# - 使用异步方法的 HttpWebRequest - 需要澄清