使用CustomComparer对元组列表进行排序
本文关键字:排序 列表 元组 CustomComparer 使用 | 更新日期: 2023-09-27 17:49:38
我有以下情况,工作良好:
var data = new List<MyData>();
data.Sort(new MyCustomComparer()) //IComparer<MyData>
现在我需要在列表中保存其他信息,但仍然使用相同的CustomComparer(仅按元组的第二个值排序):
var data = new List<Tuple<SomeData, MyData>>();
data.Sort(new MyCostumComparer()); //won´t work
SomeData与排序无关,但我需要它在排序列表中。在不改变比较器的情况下,最好的方法是什么?
谢谢。
var sorted = data.OrderBy(x => x.Item2, new MyCustomComparer());
试试这个:
var lookup = data.ToLookup(x => x.Item2);
data.Select(x => x.Item2).OrderBy(x => x, new MyCustomComparer()).Select(x => lookup[x]).ToList();