【发布时间】:2016-05-21 04:47:59
【问题描述】:
所以我有三个数组。它们的长度相同,并且以这样的方式“链接”,例如,sums[52]、prods[52] 和 indexes[52] 一起构成一条信息。出于更长、更不有趣的原因,它们没有组合成二维或三维数组。
我正在尝试对它们进行排序,以使sums 有序,而其他两个仍然相连。我现在使用的代码如下:
Array.Sort(sums.ToArray(), prods);
Array.Sort(sums.ToArray(), indexes);
Array.Sort(sums);
非常简单——它根据sums 对其他两个排序,然后对sums 排序。
很遗憾,sums 有很多重复值。因此,以这种方式排序可能会导致如下结果:
SUMS PRODUCTS INDEXES
12 67 38
12 52 107
12 60 11
13 42 98
13 17 4
18 21 60
sums 按顺序完美排序,prods 和 indexes 都匹配。我想做的是对prods 进行第二次排序。由于sums 是“键数组”但有重复项,它只是以某种随机顺序抛出prods。这是我试图获得的结果:
SUMS PRODUCTS INDEXES
12 52 107
12 60 11
12 67 38
13 17 4
13 42 98
18 21 60
sums 已排序,prods 映射到它,然后进行二次排序,indexes 映射到它。
我可以做一些效率极低的某种循环,但是这种设置处理非常大的列表,效率很重要。有没有一种简单的方法可以做到这一点?我没有看到任何明显的检查文档或查找其他人对数组键排序的用途。
【问题讨论】:
-
我们在这里讨论了多少数据?也许你应该使用 sqlite
-
或使用 linq 并合并数据 - techbrij.com/linq-combine-multiple-lists-parallel-c