双列表的多排序列表

时间:2017-02-03 08:45:06

标签: c# sorting

我有一份双重名单,

List<List<double>>
像这样

{ 0.0 ,  0.0 , -1.0 , 123.1 , 123.2 , 123.3 }
{ 0.0 ,  40.0 , 1.0 , 123.1 , 123.2 , 123.3 }
{ 1.0 ,  40.0 , 1.0 , 123.1 , 123.2 , 123.3 }
{ 1.0 ,  0.0 , -1.0 , 123.1 , 123.2 , 123.3 }

列表需要按前3列排序;并且排序优先级匹配序列,第一列排序,然后第二列,然后第三列,以提供

下面的结果
{ 0.0 ,  0.0 , -1.0 , 123.1 , 123.2 , 123.3 }
{ 0.0 ,  40.0 , 1.0 , 123.1 , 123.2 , 123.3 }
{ 1.0 ,  0.0 , -1.0 , 123.1 , 123.2 , 123.3 }
{ 1.0 ,  40.0 , 1.0 , 123.1 , 123.2 , 123.3 }

这是怎么做到的? THX。

1 个答案:

答案 0 :(得分:3)

您可以使用OrderBy()ThenBy()

List<double> list  = new List<double>() {0.0, 0.0, -1.0, 123.1, 123.2, 123.3};
List<double> list2 = new List<double>() {0.0, 40.0, 1.0, 123.1, 123.2, 123.3};
List<double> list3 = new List<double>() {1.0, 40.0, 1.0, 123.1, 123.2, 123.3};
List<double> list4 = new List<double>() {1.0, 0.0, -1.0, 123.1, 123.2, 123.3};

List<List<double>> lists = new List<List<double>>() {list, list2, list3, list4};

var sortedCollection = lists.OrderBy(i => i[0]).ThenBy(i => i[1]).ThenBy(i => i[2]);

你会得到收藏。如果您想获取列表,请在最后添加ToList()

var sortedList = lists.OrderBy(i => i[0]).ThenBy(i => i[1]).ThenBy(i => i[2]).ToList();