As we mentioned previously, when we create a parallel query, the source collection is partitioned so that multiple tasks can work on sections concurrently. Once the query completes, the results need to be merged so that they can be made available to the consuming thread. There are various ways to merge the results, depending on the query operators. We can specify how we want to merge the results explicitly using the ParallelMergeOperation enumeration and the WithMergeOption() extension method.
Let's take a look at the various merge options that are available to us.