我有一份双重名单,
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。
答案 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();