c#并行CSV解析

本文关键字:解析 CSV 并行 | 更新日期: 2023-09-27 18:02:23

请看下面的代码。

void func()
{
    for(;;)
    {
        var item = new Item();
    }
}

Item是一个类,我在其构造函数中读取了几个csv文件,如下所示

List<string> data = new List<string>();
Item()
{
    //read from csv into List<string>data
}

可以看到,csv文件是不同的,并且被读入唯一的变量。我想把它并行化。我所有的数据都在网络驱动器上。我理解这种情况下的限制是磁盘访问。有人能告诉我怎么做才能使它并行化吗?

c#并行CSV解析

如前所述,Parallel。ForEach是并行运行的最简单的方法,但是如果我没记错的话并行。ForEach是。net 4的一个方法。因此,如果您使用的是不同的版本,您将不得不找到另一个使用锁的方法。

如果你想从csv文件中读取数据,ADO.net有一个内置的函数,可以根据模式文件读取csv文件,这是我经验中读取csv文件最快的方法之一。

快速链接我从谷歌找到的http://www.daniweb.com/web-development/aspnet/threads/38676

我也有很大的成功与这个http://www.codeproject.com/KB/database/CsvReader.aspx。它比ado.net版本慢一点,但它更容易使用,你不需要架构文件。

只是一个警告,如果你使用ado.net和你的大字符串数值,如信用卡号码,你得到的东西看起来像科学符号,你的模式文件需要调整,我有很多程序员抱怨这个。

快乐编码。

如果您的所有文件都是唯一的,并且存储在唯一的变量中,请查看Parallel。ForEach语句—查看http://msdn.microsoft.com/en-us/library/dd460720.aspx