Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Coffee en 29 Diciembre 2016, 10:11 am



Título: C# Duda, comparacion de array int - string
Publicado por: Coffee en 29 Diciembre 2016, 10:11 am
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.


Título: Re: C# Duda, comparacion de array int - string
Publicado por: Eleкtro en 30 Diciembre 2016, 06:42 am
Puedes simplificar bastante el algoritmo usando LINQ:

Código
  1. using System.Linq;

Código
  1. string[] lines = {
  2.    "Nombre=paco    puntos=11 dia=26/11/2004",
  3.    "Nombre=jacinto puntos=1  dia=26/11/2004",
  4.    "Nombre=bartolo puntos=10 dia=26/11/2004"
  5. };
  6.  
  7. IOrderedEnumerable<string> sorted =
  8.    from line in lines
  9.    orderby Convert.ToInt32(line.Remove(line.LastIndexOf(' ')).
  10.                                 Remove(0, line.IndexOf("puntos=", StringComparison.OrdinalIgnoreCase) + "puntos=".Length).
  11.                                 TrimEnd(' '))
  12.    select line;
  13.  
  14. foreach (string line in sorted) {
  15.    Trace.WriteLine(line);
  16. }

Saludos


Título: Re: C# Duda, comparacion de array int - string
Publicado por: Coffee en 31 Diciembre 2016, 05:31 am
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 .


Título: Re: C# Duda, comparacion de array int - string
Publicado por: Eleкtro en 31 Diciembre 2016, 10:32 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
  1. from object in collection
  2. orderby (expression) ascending
  3. select object;

Código
  1. from object in collection
  2. orderby (expression) descending
  3. select object;

Saludos