¿Por qué el siguiente código no ordena mi lista?Ordenando una lista con pedidoBy
List<string> lst = new List<string>() { "bac", "abc", "cab" };
lst.OrderBy(p => p.Substring(0));
¿Por qué el siguiente código no ordena mi lista?Ordenando una lista con pedidoBy
List<string> lst = new List<string>() { "bac", "abc", "cab" };
lst.OrderBy(p => p.Substring(0));
desde OrdenarPor vuelve IOrderedEnumerable que debe hacer:
lst = lst.OrderBy(p => p.Substring(0)).ToList();
también se puede hacer lo siguiente:
lst.Sort();
Usted está confundiendo las operaciones de LINQ con un método que cambia la variable es aplicado a (es decir, un método de instancia del objeto).
operaciones LINQ (es decir, el .OrderBy) devuelve una consulta . Es no realizar la operación en su objeto (es decir, lst
).
necesita asignar el resultado de esa consulta de nuevo a la variable:
lst = lst.OrderBy(p => p).ToList();
en LINQ jerga.
string[] words = { "bac", "abc", "cab" };
var sortedWords = from w in words
orderby w
select w;
Console.WriteLine("The sorted list of words:");
foreach (var w in sortedWords)
{
Console.WriteLine(w);
}
..simple Kool n perfecta –
Tenga en cuenta que 'Lista .Sort' es un tipo inestable, mientras que OrdenarPor es estable. Y, por supuesto, en este caso, el orden es * solo * por la primera letra, mientras que el uso de 'list.Sort' sin ningún parámetro ordenará por toda la cadena. –
Jon, '.Substring (0)' devuelve toda la cadena, creo ... Para el primer personaje, necesita '.Substring (0,1)' o '[0]' ... –