2010-06-30 33 views

Respuesta

19

Parece que solo quiere usar el método Array.Sort.

Array.Sort(myArray) 

Hay muchas sobrecargas, algunas de las cuales llevan comparadores personalizados (clases o delegados), pero el que viene por defecto debería hacer la selección alfabéticamente (ascendente) como parece que desear.

+1

+1 por mencionar que solo es el comportamiento predeterminado. No ordenará en orden alfabético inverso, necesita engañarlo o implementar su propio género. –

+1

O simplemente .Sort() si están en una lista – simendsjo

+1

+1 Excelente respuesta, para una clasificación más compleja, eche un vistazo a la interfaz IComparable o la expresión Ordenar de Linq – armannvg

2
class Program 

    { 
     static void Main() 
     { 
      string[] a = new string[] 
      { 
       "Egyptian", 
       "Indian", 
       "American", 
       "Chinese", 
       "Filipino", 
      }; 
      Array.Sort(a); 
      foreach (string s in a) 
      { 
       Console.WriteLine(s); 
      } 
     } 
    } 
1

Array.Sort también proporciona una Sobrecarga Predicada. Puede especificar su comportamiento de clasificación no:

Array.Sort(myArray, (p, q) => p[0].CompareTo(q[0])); 

También puede utilizar LINQ para ordenar matriz:

string[] myArray = ...; 
string[] sorted = myArray.OrderBy(o => o).ToArray(); 

LINQ también le empoweres para ordenar una 2D-Array:

string[,] myArray = ...; 
string[,] sorted = myArray.OrderBy(o => o[ROWINDEX]).ThenBy(t => t[ROWINDEX]).ToArray(); 

El comportamiento de clasificación predeterminado de LINQ también es alfabético. Puede revertir esto usando OrderByDescending()/ThenByDescending() en su lugar.

Cuestiones relacionadas