Resulta que tengo unas listas, las cuales las fui creando juntas, es decir el index de la lista q guarde el primer valor, lo use para poner otro valor en la otra lista con ese mismo index.
Perdonen que no me pueda explicar bien :/ , miren algo asi hice:

for (i = 0; i < num; i++)
list = "2"
list2 = "-8x"

Es decir, van en pareja juntitos esos valores.

El problema es este:
El list[] tiene valores string del "1" hasta lo q sea, pero siempre algo como esto "1", "5", "6" , "7", "2", "3", "4".
El list2[] tiene valores string de por ejemplo "2x" o "+7" o "-4" , etc.
Un ejemplo de valores despues del bucle donde tomo esos valores podria ser asi:

list[0] = "1"
list2[0] = "2x"

list[1] = "5"
list2[1] = "+7"

list[2] = "6"
list2[2] = "-4"

list[3] = "2"
list2[3] = "-8x"

Ahora lo que yo quiero es ordenar el list[] con su valor maximo primero hasta el valor minimo que sera 1. Es decir, cambiarle los index para que el valor de list[0] = "6" , list[1] = "5" , list[2] = "2" , list[3] = "1"
PERO.. acuerdense que cada valor iba junto a la otra lista, la list2[], entonces habria que cambiar el list2[] para que quede list2[0] = "-4" , list2[1] = "+7", list2[2] = "-8x", list2[3] = "2x"

Entienden? si no entienden tratare de explicar de nuevo, talvez la enrede mucho y no es algo muy dificil de hacer, pero no puedo ni empezar, solo me plantie hacerlo asi:

Código:
  1. public static void Order(ref List<string> lMulti, ref List<string> lNivel)
  2.         {
  3.             List<string> lM = new List<string>();
  4.             List<string> lN = new List<string>();
  5.  
  6.  
  7.  
  8.  
  9.         }


Ya que esas listas vienen como referencia para "transformarse"
La lista lMulti es la list2[] del ejemplo y la lista lNivel es la list[].
Esas 2 listas dentro del procedimiento lo puse porque talvez una idea es ir metiendo los datos en esos 2 para luego al final pasarle los valores a las listas.

Espero que puedan ayudarme, desde ya gracias!