【问题标题】:does PLINQ preserve the original order in a sequence?PLINQ 是否保留序列中的原始顺序?
【发布时间】:2011-01-06 23:36:25
【问题描述】:

PLINQ 是否保证按照被操作的原始序列的顺序返回查询结果,即使结果是并行产生的?例如:

new List<String>(){"a", "b", "c", "d"}.asParallel().Select(str => str + "a").asSequential().ToList().ForEach(str => Console.Write(str + ", ");

结果是否总是“aa, ba, ca, da,”?

【问题讨论】:

    标签: c# plinq


    【解决方案1】:

    您必须使用AsOrdered()来保留订单:

            new List<String>(){"a", "b", "c", "d"}
                .AsParallel()
                .AsOrdered()
                .Select(str => str + "a")
                .AsSequential()
                .ToList()
                .ForEach(str => Console.Write(str + ", "));
    

    也可以看看这个:How to: Control Ordering in a PLINQ Query

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多