我有dataTable
,我想使用Parallel.ForEach.
示例:
Parallel.ForEach(dt.AsEnumerable().AsEnumerable(), drow =>
{
Create new list
});
答案 0 :(得分:1)
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
类:
using System.IO;
...
string fileName = @"C:\MyFile.csv";
File.WriteAllLines(fileName, list);
在上面的玩具示例中,我假设我们希望基于ExtraData(drow[5])
丰富的第2,第4和第12列的CSV,并且所有列的值都不包含"
和{ {1}}字符