我使用此代码对数组进行排序
Array.Sort(numsFoundedCount, numsFoundedSorted);
它的工作原理但当2个numsFoundedSorted项具有相同的numsFoundedCount值时,我希望它们(numsFoundedSorted项)从min到max排序。
int[] numsFoundedCount = new int[80];
int[] numsFoundedSorted = new int[80];
numsFoundedSorted 包含一个整数, numsFoundedCount 表示此整数出现的次数。所以我想根据numsFoundedCount将numsFoundedSorted从最小值排序到最大值。
我希望两个数组都像Array.Sort一样进行排序 例如:
numsFoundedSorted {5,7,6,8}
numsFoundedCount {3,2,2,1}
排序后必须:
numsFoundedSorted {8,6,7,5}
numsFoundedCount {1,2,2,3}
答案 0 :(得分:2)
如果我理解正确,这就是你想要的
var numsFoundedSorted = numsFoundedSorted
.Select((item, idx) => new { Index = idx, Value = item })
.OrderBy(tuple => numsFoundedCount[tuple.Index])
.ThenBy(tuple => tuple.Value)
.Select(tuple => tuple.Value)
.ToArray();
Array.Sort(numsFoundedCount);
使用Array.Sort
如果您已经在使用C#7功能,则可以将new { Index = idx, Value = item }
替换为(Index: idx, Value: item)