2010-06-30 20 views

risposta

19

Sembra che tu voglia utilizzare il metodo Array.Sort.

Array.Sort(myArray) 

Ci sono molti sovraccarichi, alcuni che prendono comparatori personalizzati (classi o delegati), ma quello di default dovrebbe fare il ordinamento alfabetico (ascendente), come ti sembra di volere.

+1

+1 per aver menzionato solo il comportamento predefinito. Non ordinerà l'inversione alfabetica, è necessario ingannarlo o implementare il tuo tipo. –

+1

Oppure solo .Sort() se sono in un elenco – simendsjo

+1

+1 Risposta eccellente, per un ordinamento più complesso vorrei dare un'occhiata all'interfaccia IComparable o all'espressione Sort di 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 fornisce anche un Predicate-Overload. È possibile specificare la cernita comportamento c'è:

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

È inoltre possibile utilizzare LINQ per ordinare l'array:

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

LINQ si empoweres anche per ordinare un 2D-Array:

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

Il comportamento di ordinamento predefinito di LINQ è anche in ordine alfabetico. È possibile invertire questo utilizzando invece OrderByDescending()/ThenByDescending().

Problemi correlati