2013-12-23 25 views
6

假設你有LINQ查詢像撤消Enumerable.AsParallel(),回到串行模式

source.AsParallel().Where(expensiveOperation).Select(cheapOperation) 

我想在這種情況下Select也運行在並行執行模式。也許這只是一個便宜的操作,如i => i*2,那麼有沒有辦法在鏈式方法查詢時停止並行執行?

(也許像.AsParallel().Where(expensiveOp).AsSerial?().Select(cheapOp)?)

+0

我相信PLINQ很聰明,並且與'Select()'一起執行'Where()'。所以,即使'Select()'便宜,你可能也不需要強制它是連續的。但是你必須自己衡量一下。 – svick

回答

9

你要找的操作AsSequential

source.AsParallel().Where(expensiveOp).AsSequential().Select(cheapOp) 
+0

看起來像我在詞彙上錯了哈哈。感謝您的注意。我真的在文檔中尋找'AsSerial()'幾分鐘。 –