web-dev-qa-db-fra.com

Comment puis-je commander une liste <string>?

J'ai ce List<string>:

IList<string> ListaServizi = new List<string>();

Comment puis-je le commander par ordre alphabétique et croissant?

105
markzzz
ListaServizi = ListaServizi.OrderBy(q => q).ToList();
215
daryal

Vous pouvez utiliser Sort

List<string> ListaServizi = new List<string>() { };
ListaServizi.Sort();
39
Richard Dalton

D'autres réponses sont correctes pour suggérer Sort, mais elles semblent avoir oublié le fait que l'emplacement de stockage est saisi sous la forme IList<string. Sort ne fait pas partie de l'interface.

Si vous savez que ListaServizi contiendra toujours un List<string>, vous pouvez modifier son type déclaré ou utiliser un transtypage. Si vous n'êtes pas sûr, vous pouvez tester le type:

if (typeof(List<string>).IsAssignableFrom(ListaServizi.GetType()))
    ((List<string>)ListaServizi).Sort();
else
{
    //... some other solution; there are a few to choose from.
}

Peut-être plus idiomatique:

List<string> typeCheck = ListaServizi as List<string>;
if (typeCheck != null)
    typeCheck.Sort();
else
{
    //... some other solution; there are a few to choose from.
}

Si vous savez que ListaServizi aura parfois une implémentation différente de IList<string>, laissez un commentaire et j'ajouterai une ou deux suggestions pour le trier.

11
phoog
ListaServizi.Sort();

Fera cela pour vous. C'est assez simple avec une liste de chaînes. Vous devez être un peu plus intelligent si vous triez des objets.

5
Ste
List<string> myCollection = new List<string>()
{
    "Bob", "Bob","Alex", "Abdi", "Abdi", "Bob", "Alex", "Bob","Abdi"
};

myCollection.Sort();
foreach (var name in myCollection.Distinct())
{
    Console.WriteLine(name + " " + myCollection.Count(x=> x == name));
}

sortie: Abdi 3 Alex 2 Bob 4

3
Abdi