我有一个类似的清单
| column1 | column2 |
| 1 | 72 |
| 2 | 30 |
| 3 | 27 |
| 3 | 38 |
| 4 | 72 |
如您所见,该列表已经在column1上进行了排序,我的目标是仅在equals列1上对第二列执行OrderByDescending。
| column1 | column2 |
| 1 | 72 |
| 2 | 30 |
| 3 | 38 |
| 3 | 27 |
| 4 | 72 |
我不能重新运行第一个OrderBy(这很难解释,我们不在乎,我只是不能:D)所以忘了
list.OrderBy(e => e.column1).ThenByDescending(e => e.column2)
实际上,如果我不必执行
.ThenByDescending(e => e.column2)
就可以简单地执行.OrderBy
(也许我可以运行不会更改排序的“空” OrderBy
),我不会有任何问题?能够做ThenByDescending
吗?) 最佳答案
list.GroupBy(i => i.column1).SelectMany(i => i.OrderByDescending(g => g.column2))
将与许多提供程序一起使用,但有些可能无法保留
GroupBy
中的顺序。在这种情况下:list.AsEnumerable().GroupBy(i => i.column1).SelectMany(i => i.OrderByDescending(g => g.column2))
通过将操作强制进入内存(由
GroupBy
保留顺序)将起作用,但缺点是所有后续操作都在内存中而不是在DB等上完成。关于c# - LINQ OrderBy仅在第二处,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35310801/