List<T>
est pas thread-safe, C'est pourquoi Parallel.ForEach
n'est pas facile à se marier List<T>
. Essayez d'utiliser Linq et sa version parallèle PLinq, laissez .Net faire le travail pour vous; quelque chose comme ceci:
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();
Si vous souhaitez enregistrer le list
en tant que fichier utilisation File
classe:
using System.IO;
...
string fileName = @"C:\MyFile.csv";
File.WriteAllLines(fileName, list);
Dans l'exemple de jouet ci-dessus, je l'ai supposé que nous voulons avoir CSV base sur les 2ème, 4ème et 12ème colonnes enrichies par ExtraData(drow[5])
et toutes les valeurs des colonnes ne contiennent pas "
et ,
caractères
Pourquoi Parallel.ForEach? – Amit
Est-il normal que la nouvelle collection soit une collection simultanée? – mybirthname