使用 Parallel.ForEach 创建 CSV 文件

Create CSV file using Parallel.ForEach

我有 dataTable,我想创建一个带有一些额外字段的新列表,使用 Parallel.ForEach.

示例:

Parallel.ForEach(dt.AsEnumerable().AsEnumerable(), drow =>
{

Create new list

});

List<T>不是线程安全的,所以Parallel.ForEach不容易嫁给List<T>。尝试使用 Linq 及其并行版本 PLinq,让 .Net 为您完成工作;像这样:

 var list = dt
  .AsEnumerable() 
  .AsParallel()
  .AsOrdered() // if you want to preserve rows order
  .Select(drow => string.Join(",", drow[1], drow[5], drow[11], ExtraData(drow[5])))
  .ToList();

如果您想将 list 保存为 文件 使用 File class:

 using System.IO;

 ...

 string fileName = @"C:\MyFile.csv";

 File.WriteAllLines(fileName, list);  

在上面的玩具示例中,我假设我们希望 CSV 基于由 ExtraData(drow[5]) 丰富的第 2、4 和 12 列,并且所有列的值都不包含 ", 个字符