La tua soluzione è un'alternativa, che sia diversa dalla mia è logico in quanto è un altro punto di vista.
La differenza tra le due nostre opzione, è che la mia usa totalmente codice, la tua si basa sui dati, tutto qui, ma vanno bene entrambe.
Non capisco però il perchè cercavi metodi per array multidimensionali... nel tuo caso servono a poco, e complicano di molto la cosa.
Se, per caso, questa funzionalità viene richiesta da altre parti del programma, il mio consiglio è di farne una bella funzioncina che, con i giusti parametri, ti sorta quello che vuoi, e ti ritorna una lista bella ordinata... pensaci...
In alcune parti dei miei progetti, io lavoro con gli array, utilizzando String[], in cui metto per ogni riga un certo numero di elementi, che separo con un determinato carattere. Mettendo i parametri nella giusta sequenza, il sort è abbastanza facile. Ad ogni modo ho creato una routine che, in base al carattere separatore, mi sorta qualsiasi tipo di lista, passandogli il numero di colonna da sortare. Dopodiche, mi basta fare un loop sull'array, prendendo la colonna interessata, e popolando la ListBox o la Combo. Diciamo che utilizza i nostri due sistemi che ci siamo detti.
Per esempio, con l'oggetto TreeList, per poter capire quale elemento stò puntando, e a quale oggetto corrisponde, io associo ogni elemento ad una chiave (key), composta da un certo numero di elementi (convertiti ovviamente in stringa), separati dall'undercose, ovvero gli id stessi degli oggetti associati. Indi per cui, mi basta estrarre il codice dalla chiave, splittando opportunamente la chiave tramite il carattere underscore, e prendere l'elemento corrispondente, indi per cui ancora andare a cercarmi l'oggetto corrispondente.