Что бы я сделал, это получил бы ваш список в алфавитном порядке, а затем переставил так, чтобы при использовании порядка по умолчанию для списка данных / ретранслятора он был в нужном вам формате.
В странном псевдокоде.
/*
your input is A,B,C,D,E,F,G,H,I,J,K,L
given this order, it returns:
A, B, C
D, E, F
G, H, I
J, K, L
but you want
A, E, I
B, F, J
C, G, K
D, H, L
So you need to change your input to this:
A,E,I,B,F,J,C,G,K,D,H,L
*/
let numColumns = 3;
let numItems = 12;
let itemsPerColumn = numItems / numColumns;
loop i from 0 to itemsPerColumn - 1
loop j from 0 to numColumns - 1
newOrdering.push(oldOrdering[i * numColumns + j])
Возможно, есть какая-то изящная функция .NET для изменения стиля упорядочения, но это всего лишь один метод старой школы.
PS: это работает в лучшем случае, когда количество элементов делится на количество столбцов. Вам придется немного подстроиться под разные значения.