C#多维列表排序

时间:2017-11-24 09:40:53

标签: c# performance list sorting multidimensional-array

我正在寻找最佳方式,在时间表现方面,对多维列表进行排序。 我有一个包含数百万行和列数可变数(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。

0 个答案:

没有答案