Parallel.Foreach C#随机结果

时间:2015-11-19 12:55:56

标签: c# mysql

我想从数据集中读取所有结果并通过Mysql插入一个值,但是插入会带我随机结果:

Parallel.ForEach(table, new ParallelOptions { MaxDegreeOfParallelism = 2 }, row =>
{
    DataRow newrow = BDDestino.newrow("Cars");

    newrow["Code"] = row["CODE"];
    newrow["Name"] = row["NAME"];

    BD.insert(newrow); 
});

DataSet / DataTable“表”的内容很棒,但Mysql表中的插入是随机的。

如果我的行是

1, 2, 3, 4

插入有时是:2,3

或:> 1,2,3

我需要按顺序排列所有行。

编辑:我认为 Parallel.ForEach 句子可以插入白名单而且非常快,但我看到 Parallel.ForEach 没有自己动手吧。就像@juharr说的那样,这句话可能是最糟糕的。谢谢大家。

1 个答案:

答案 0 :(得分:1)

如果使用并行性,则无法保证调用.insert()的顺序(如您所见)。

不知何故,您需要提前修复该订单:

  • 使用数组索引,可以从现有表中预先计算。

    [status]

或者也许没关系......你可以随后对它们进行排序。