使用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与排序无关,但我需要它在排序列表中。在不改变比较器的情况下,最好的方法是什么?

谢谢。

使用CustomComparer对元组列表进行排序

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();