使C#ParallelEnumerable.OrderBy稳定排序

使C#ParallelEnumerable.OrderBy稳定排序,c#,linq,sorting,parallel-processing,plinq,C#,Linq,Sorting,Parallel Processing,Plinq,我正在使用OrderBy按整数ID对对象列表进行并行排序。我有几个具有相同id的对象,需要排序保持稳定 根据,并行化的OrderBy并不稳定,但有一种实现方法可以使其稳定。然而,我找不到这样的例子 var list = new List<pair>() { new pair("a", 1), new pair("b", 1), new pair("c", 2), new pair("d", 3), new pair("e", 4) }; var newList = list.AsPa

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

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

var list = new List<pair>() { 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<pair, int>(p => p.order);

private class pair {
  private String name;
  public int order;

  public pair (String name, int order) {
    this.name = name;
    this.order = order;
  }
}
var list=newlist(){new pair(“a”,1),new pair(“b”,1),new pair(“c”,2),new pair(“d”,3),new pair(“e”,4)};
var newList=list.aspallel().WithDegreeOfParallelism(4).OrderBy(p=>p.order);
私有类对{
私有字符串名称;
公共秩序;
公共对(字符串名称,整数顺序){
this.name=名称;
这个。顺序=顺序;
}
}
此方法的备注建议:

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);

我也试过ThenBy,但并没有成功。你们是说另一个
OrderBy
方法的备注中的示例不起作用吗?我以为我已经点击了这两个方法页面,但显然我看到了错误的重载方法。工作得很好。感谢您提供更清晰的代码示例。微软对变量名e和i的使用不太清楚。