使用 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 列,并且所有列的值都不包含 "
和 ,
个字符
我有 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 列,并且所有列的值都不包含 "
和 ,
个字符