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

时间:2015-05-19 10:43:55

标签: c# list sorting tuples

我有以下情况可以正常工作:

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

谢谢。

2 个答案:

答案 0 :(得分:1)

试试这个:

 var lookup = data.ToLookup(x => x.Item2);
 data.Select(x => x.Item2).OrderBy(x => x, new MyCustomComparer()).Select(x => lookup[x]).ToList();

答案 1 :(得分:1)

var sorted = data.OrderBy(x => x.Item2, new MyCustomComparer());