4

を使用して、オブジェクトのリストを整数 ID で並列に並べ替えていますOrderBy。同じ ID を持つオブジェクトがいくつかあり、並べ替えを安定させる必要があります。

Microsoft のドキュメントによると、並列化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;
  }
}
4

1 に答える 1

8

他の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);
于 2012-12-04T18:59:12.973 に答える