2012-04-18 9 views
80

tengo esta lista:¿Cómo puedo pedir una lista <string>?

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

cómo puede ordenar que se debe a las cuerdas en su interior? Alfabético y ascendente.

+3

Ha tratado '.Sort' http://msdn.microsoft.com/en-us/library/b0zbh7b6%28v=vs. 90% 29.aspx? – Matthew

+0

Método de clasificación; en combinación con Reverse si también necesita descender –

+0

Mire aquí http://www.dotnetperls.com/sort-list –

Respuesta

155
ListaServizi = ListaServizi.OrderBy(q => q).ToList(); 
+0

@Servy una razón para usar OrderBy sería que ListaServizi no tiene un método Sort porque está declarado como 'IList '. Este código funcionaría tal como está escrito, a diferencia de las respuestas que recibieron más votos ascendentes con 'ListaServizi.Sort()'. No digo que esta sea la solución que elegiría, pero esta fue la única respuesta correcta cuando publiqué mi respuesta. – phoog

+0

Si no es la solución que elegiría, ¿por qué proponerla como respuesta? Proponte lo que harías como respuesta; si eso significa cambiar el tipo de IList a List para que pueda llamar '.Sort', ¿por qué no hacer eso? – Servy

+1

@Servy He resuelto el problema sin cambiar la especificación del problema. Esa es la forma preferida, de lejos. Además, el enunciado del problema utiliza la interfaz sobre el patrón de implementación, que es muy importante. Proponer el cambio al tipo de lista es correcto, pero se debe hacer como una respuesta alternativa, después de la correcta, porque requiere cambiar el problema. –

31

Puede utilizar Sort

List<string> ListaServizi = new List<string>() { }; 
ListaServizi.Sort(); 
4
ListaServizi.Sort(); 

lo hará por ti. Es bastante sencillo con una lista de cadenas. Debes ser un poco más inteligente si clasificas objetos.

+1

'ListaServizi' es' IList '; la interfaz no tiene un método 'Ordenar '. Al menos necesitas un elenco aquí. – phoog

7

Otras respuestas son correctas para sugerir Sort, pero parecen haber pasado por alto el hecho de que la ubicación de almacenamiento se escribe como IList<string. Sort no es parte de la interfaz.

Si sabe que ListaServizi siempre contendrá un List<string>, puede cambiar su tipo declarado o utilizar un molde. Si no está seguro, puede probar el tipo:

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

Quizás más idiomática:

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

Si usted sabe que a veces ListaServizi llevará a cabo una implementación diferente de IList<string>, dejar un comentario, y Añadiré una sugerencia o dos para ordenarlo.

2
 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)); 
     } 

de salida: Abdi 3 Alex 2 Bob 4

Cuestiones relacionadas