2011-01-06 97 views
5

即使結果是並行生成的,PLINQ是否能保證以原始序列的操作順序返回查詢結果?例如:PLINQ是否按順序保留原始順序?

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

結果總是「aa,ba,ca,da」嗎?

回答

8

你必須使用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

相關問題