使C#ParallelEnumerable.OrderBy稳定排序

我正在使用OrderBy并行地按整数ID排序对象列表。 我有一些具有相同id的对象,需要排序才能保持稳定。

根据微软的文档 ,并行化的OrderBy并不稳定,但有一种实现方法可以使其稳定。 但是,我找不到这样的例子。

 var list = new List() { new pair("a", 1), new pair("b", 1), new pair("c", 2), new pair("d", 3), new pair("e", 4) }; var newList = list.AsParallel().WithDegreeOfParallelism(4).OrderBy(p => p.order); private class pair { private String name; public int order; public pair (String name, int order) { this.name = name; this.order = order; } } 

另一个OrderBy方法的评论提出了这种方法:

 var newList = list .Select((pair, index) => new { pair, index }) .AsParallel().WithDegreeOfParallelism(4) .OrderBy(p => p.pair.order) .ThenBy(p => p.index) .Select(p => p.pair);