如何在C#中订购列表列表

时间:2014-05-02 02:48:10

标签: c# linq list

我实际上使用的列表包含包含列表的列表(是三套):

List<List<List<int>>> threeD = new List<List<List<int>>>();

在我填充这个怪物后,我明白了:

var threeD = [ [[18,100],[13,95]], [[12,100],[2,5],[7,45]], [[19,100]] ];

上面的列表包含三个单独的列表,其中列表包含x和y int。如何根据第一个数字对这些进行排序。我需要的输出是:

var threeD = [ [[13,95],[18,100]], [[2,5],[7,45],[12,100]], [[19,100]] ];

我在考虑使用某种linq语句进行排序。或者我应该继续创建嵌套for循环?

修改 我只需要对最内层列表进行排序,而不是对外部列表进行排序。它们实际上是使用jqplot对具有多行的线图进行协调,因此每行渲染的顺序并不重要。感谢

1 个答案:

答案 0 :(得分:3)

首先对x / y数字的内部列表进行排序,然后排序外部列表:

threeD.Select(sublist => sublist.OrderBy(xy => xy[0]).ToList())
      .OrderBy(sublist => sublist[0][0])
      .ToList();

如果你只需要对内部列表进行排序,只需将外部排序:

threeD.Select(sublist => sublist.OrderBy(xy => xy[0]).ToList()).ToList();