C# Duda, comparacion de array int - string

Iniciado por Coffee, 29 Diciembre 2016, 10:11 AM

0 Miembros y 1 Visitante están viendo este tema.

Coffee

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.

Eleкtro

#1
Puedes simplificar bastante el algoritmo usando LINQ:

Código (csharp) [Seleccionar]
using System.Linq;

Código (csharp) [Seleccionar]
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








Coffee

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 .

Eleкtro

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:
Código (csharp) [Seleccionar]
from object in collection
orderby (expression) ascending
select object;


Código (csharp) [Seleccionar]
from object in collection
orderby (expression) descending
select object;


Saludos