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