我正在寻找最佳方式,在时间表现方面,对多维列表进行排序。 我有一个包含数百万行和列数可变数(1-10)的多维列表。
List<List<int?>> multiDimensionalList = new List<List<int?>>//();
{
new List<int?> { 0 ,8 ,57 ,5},
new List<int?> { 1 ,4 ,2 ,7},
new List<int?> { 2 ,0 ,-55 ,9},
new List<int?> { 3 ,8 ,57 ,2},
new List<int?> { 4 ,2 ,-120 ,4},
new List<int?> { 5 ,3 ,57 ,5},
};
int[] orderParameters = { 2, 3, 1 };
我必须使用输入中的订单参数列来订购此列表。
List<List<int?>> sortedExample = new List<List<int?>>
{
new List<int?> {4 ,2 ,-120 ,4},
new List<int?> {2 ,0 ,-55 ,9},
new List<int?> {1 ,4 ,2 ,7},
new List<int?> {3 ,8 ,57 ,2},
new List<int?> {5 ,3 ,57 ,5},
new List<int?> {0 ,8 ,57 ,5},
};
使用Linq简单实现:
List<List<int?>> sortedList = multiDimensionalList
.OrderBy(x => x[orderParameters[2]])
.OrderBy(y => y[orderParameters[1]])
.OrderBy(z => z[orderParameters[0]])
.ToList();
您知道更好的解决方案吗?
此任务经常被请求,并且必须是单线程。
性能涉及从multiDimensionalList生成sortedList。