Итак, у меня есть три массива. Все они одинаковой длины и «связаны» таким образом, что, например, 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 – tofutim
или использовать linq и просто объединить данные - http://techbrij.com/linq-combine-multiple-lists-parallel-c – tofutim