我有一个清单:
List<Tuple<int, int>> MyList = new List<Tuple<int, int>>();
列表的值如下:
int int
0 2
0 1
0 4
1 2
1 3
1 0
2 0
2 9
2 1
3 2
3 5
3 2
如何按
list
的最大值对Item2
进行排序,但保存Item1
的顺序?如下所示:int int
2 0
2 9*
2 1
3 2
3 5*
3 2
0 2
0 1
0 4*
1 2
1 3*
1 0
尝试使用
MyList.OrderBy(x => x.Item2)
但没有成功 最佳答案
如我所见,您要订购组(不是单个项目):
具有Item1 == 2
的组排在第一位,因为该组在所有其他组中具有最大的Item2
值(9
); Item1 == 1
组是最后一个组,其最大Item2
值(3
)在其他组中最小
2 0
2 9*
2 1
...
1 2
1 3*
1 0
要订购组,请尝试
GroupBy
:var result = MyList
.GroupBy(item => item.Item1) // groups
.OrderByDescending(group => group.Max(item => item.Item2)) // are ordered
.SelectMany(group => group); // then expanded
关于c# - 仅按Item2的List <Tuple <int,int >>排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58098567/