我正在使用对象的整数 id 并行对对象列表进行排序OrderBy
。我有一些具有相同 id 的对象,并且需要排序保持稳定。
根据微软的文档 https://learn.microsoft.com/en-us/dotnet/api/system.linq.parallelenumerable.orderby,并行化的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;
}
}
备注为另一个OrderBy method http://msdn.microsoft.com/en-us/library/dd383662.aspx建议这种方法:
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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)