C# 使用CustomComparer对元组进行排序

C# 使用CustomComparer对元组进行排序,c#,list,sorting,tuples,C#,List,Sorting,Tuples,我有以下情况,效果良好: var data = new List<MyData>(); data.Sort(new MyCustomComparer()) //IComparer<MyData> var data=newlist(); data.Sort(新的MyCustomComparer())//IComparer 现在我需要在列表中保存其他信息,但仍然使用相同的CustomComparer(仅按元组的第二个值排序): var data=newlist();

我有以下情况,效果良好:

var data = new List<MyData>();
data.Sort(new MyCustomComparer())   //IComparer<MyData>
var data=newlist();
data.Sort(新的MyCustomComparer())//IComparer
现在我需要在列表中保存其他信息,但仍然使用相同的CustomComparer(仅按元组的第二个值排序):

var data=newlist();
data.Sort(新的MyCostumComparer())//行不通
有些数据与排序无关,但我需要它在排序列表中。 在不更改比较器的情况下执行此操作的最佳方法是什么

谢谢。

试试这个:

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

肯定比我的答案好。
 var lookup = data.ToLookup(x => x.Item2);
 data.Select(x => x.Item2).OrderBy(x => x, new MyCustomComparer()).Select(x => lookup[x]).ToList();
var sorted = data.OrderBy(x => x.Item2, new MyCustomComparer());