如何在c#中对列表的列表的列表排序?

本文关键字:列表 排序 | 更新日期: 2023-09-27 18:01:20

我实际上使用的是包含列表的列表包含列表的列表(是的,三个集合):

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的具有多条线的线形图的坐标,因此每条线的呈现顺序并不重要。由于

如何在c#中对列表的列表的列表排序?

首先对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();