我正在看这段代码
var numbers = Enumerable.Range(0, 20);
var parallelResult = numbers.AsParallel().AsOrdered()
.Where(i => i % 2 == 0).AsSequential();
foreach (int i in parallelResult.Take(5))
Console.WriteLine(i);
本AsSequential()
应该使生成的数组排序。实际上,它是在执行后进行排序的,但是如果我删除了对的调用AsSequential()
,则仍会对其进行排序(因为AsOrdered()
)。
两者有什么区别?
AsSequential
只是为了停止任何进一步的并行执行-因此命名。我不确定您是从哪里想到“应该对结果数组进行排序”的。该文档非常清楚:
将ParallelQuery转换为IEnumerable,以强制对查询进行顺序评估。
如您所说,AsOrdered
确保排序(针对该特定序列)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句