我有以下情况可以正常工作:
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的情况下,最好的方法是什么。
谢谢。
答案 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());