Buenas, tengo que hacer un marcador de puntos
se me plantea el siguiente problema
tengo que extraer las lineas de un documento de texto
Estas almacenarlas en un array de string
___________________________________________
Hasta aqui bien, ahora viene el problema
Esas lineas son con este formato
Nombre=paco puntos=10 dia=26/11/2004
Problema
En funcion de la puntuacion de esa linea tengo que ordenar de mayor a menor todas las lineas y mostrarlas en pantalla.
Se que puedo extraer la puntuacion con un substring y esta podria añadirla a un array de int (de esta forma solo ordenaria la numeracion "puntuacion"), pero tengo que ordenar acorde a esa puntuacuin las lineas del array string
Un saludo
Gracias por la ayuda de antemano.
Puedes simplificar bastante el algoritmo usando LINQ:
using System.Linq;
string[] lines = {
"Nombre=paco puntos=11 dia=26/11/2004",
"Nombre=jacinto puntos=1 dia=26/11/2004",
"Nombre=bartolo puntos=10 dia=26/11/2004"
};
IOrderedEnumerable<string> sorted =
from line in lines
orderby Convert.ToInt32(line.Remove(line.LastIndexOf(' ')).
Remove(0, line.IndexOf("puntos=", StringComparison.OrdinalIgnoreCase) + "puntos=".Length).
TrimEnd(' '))
select line;
foreach (string line in sorted) {
Trace.WriteLine(line);
}
Saludos
Gracias por la respuesta pero tengo una duda persisten respecto al asunto, esto lo ordena de menor a mayor como podría ordenarlo de mayor a menor .
Cita de: Coffee en 31 Diciembre 2016, 05:31 AM
esto lo ordena de menor a mayor como podría ordenarlo de mayor a menor .
Simplemente añade el modificador
ascending o
descending después de la clausula
orderby para indicarle expresamente que se ordene de forma ascendente o descendente.
Sintaxis:
from object in collection
orderby (expression) ascending
select object;
from object in collection
orderby (expression) descending
select object;
Saludos