我有一个列表:
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
如何按Item2
的最高 值对list
进行排序,但保存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)
但没有成功
最佳答案
如我所见,您想订购组(不是单件商品):
group Item1 == 2
排在第一位,因为此 group 具有最大 Item2
值( 9
) 超过所有其他组; group 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# - OrderBy a List<Tuple<int, int>> 仅按 Item2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58098567/