c# - OrderBy a List<Tuple<int, int>> 仅按 Item2

标签 c# linq sorting

我有一个列表:

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/

相关文章:

c# - 在c#中使用linq执行存储过程

Python 选择排序数据框行

c# - 在 bot 框架中使用文本转语音

c# - 比较两个相同的字符串列表

c# - 将字符串转换为控件名称 c# wp8.1

c# - 在 visual studio 2012 Express Edition 中运行 sql 脚本 [主题 : C# interpreted queries]

c++ QuickSort不清楚

python合并排序问题

c# - 实现涉及多个程序集的自定义 Controller 工厂

c# - 模板字段中的 ASP.NET c# 复选框列表