ho una serie di molte stringhe. Come posso ordinare le stringhe in base all'alfabeto?come ordinare una serie di stringhe in ordine alfabetico?
7
A
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.
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().
+1 per aver menzionato solo il comportamento predefinito. Non ordinerà l'inversione alfabetica, è necessario ingannarlo o implementare il tuo tipo. –
Oppure solo .Sort() se sono in un elenco – simendsjo
+1 Risposta eccellente, per un ordinamento più complesso vorrei dare un'occhiata all'interfaccia IComparable o all'espressione Sort di Linq – armannvg