Foros del Web » Programación para mayores de 30 ;) » .NET »

Ordenar StringBuilder()

Estas en el tema de Ordenar StringBuilder() en el foro de .NET en Foros del Web. Hola. Estoy empezando en esto de la programación y necesito ayuda de como realizar esto. tengo un elemento StringBuilder() el cual contiene un listado como ...
  #1 (permalink)  
Antiguo 14/06/2016, 01:38
 
Fecha de Ingreso: abril-2012
Mensajes: 42
Antigüedad: 12 años
Puntos: 0
Ordenar StringBuilder()

Hola. Estoy empezando en esto de la programación y necesito ayuda de como realizar esto. tengo un elemento StringBuilder() el cual contiene un listado como el que muestro a continuación:

Listado = new StringBuilder();

Y en Listado voy añadiendo lineas de string como:

F00054 - Nombre1
F00034 - Nombre2
F00014 - Nombre3
....
...
...

Lo que quiero es recorrerme ese StringBuilder al final y ordenarlo(de menor a mayor) por la primera columna(la de Fxxxxxx). Es decir, que al final tenga como resultado:
F00014 - Nombre3
F00034 - Nombre2
F00054 - Nombre1

Como podria hacer esto???
Gracias de antemano
  #2 (permalink)  
Antiguo 14/06/2016, 01:49
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Ordenar StringBuilder()

No se puede ordenar un StringBuilder. Lo que tendrías que hacer es tener ordenada la información antes de construir el StringBuilder.
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 14/06/2016, 02:09
 
Fecha de Ingreso: abril-2012
Mensajes: 42
Antigüedad: 12 años
Puntos: 0
Respuesta: Ordenar StringBuilder()

Claro, es que El StringBuilder se construye en un proceso interno, y yo recibo ese stringBuilder a posterior. Quieren que recibido esto, lo ordene por esa columna para pintarlo y mandarlo por email.
El String Builder se va construyendo de la siguiente manera(no lo puedo tocar):

foreach{
...
...
Listado.AppendLine(aList[0].Codigo+ " - " + aList[0].ProductName);
...
...
}
  #4 (permalink)  
Antiguo 14/06/2016, 02:14
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Ordenar StringBuilder()

Como te decía, lo que tendrías que hacer es el ordenamiento antes de construir el StringBuilder. En tu caso tendrías que hacer el OrderBy en el foreach. Sin más código es imposible decirte algo más preciso (necesitaría saber la cabecera del foreach y de donde viene aList[0]).
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 14/06/2016, 03:31
 
Fecha de Ingreso: abril-2012
Mensajes: 42
Antigüedad: 12 años
Puntos: 0
Respuesta: Ordenar StringBuilder()

aList es una lista que contiene lo que se va metiendo en el Stringbuilder.
Este proceso, lee un Excel que va recorriendo las filas del Excel para ir sacando a traves del StringBuilder dicha información. (por eso eso está el foreach). Mi problema es que nunca habia visto esta estructura StringBuilder, pensabe que era un tipo de lista o similar. Pero veo que no. El proceso lo que hace es mostrar en una pagina el contenido del StringBuilder como he comentado al principio. No se puede pasar a una lista esto y ordenarla de alguna manera???
Muchas gracias nuevamente por responderme. Intento ser lo mas claro con mi duda.
  #6 (permalink)  
Antiguo 14/06/2016, 03:38
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Ordenar StringBuilder()

Si aList es la lista, porque siempre coges la posición cero?

Entiendo que lo que tendrías que hacer es ordenar aList en el foreach para luego hacer la concatenación a StringBuilder ya ordenada.
__________________
Aviso: No se resuelven dudas por MP!
  #7 (permalink)  
Antiguo 14/06/2016, 03:40
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Ordenar StringBuilder()

Si aList es la lista, porque siempre coges la posición cero?

Entiendo que lo que tendrías que hacer es ordenar aList en el foreach para luego hacer la concatenación a StringBuilder ya ordenada.
__________________
Aviso: No se resuelven dudas por MP!
  #8 (permalink)  
Antiguo 14/06/2016, 03:44
 
Fecha de Ingreso: abril-2012
Mensajes: 42
Antigüedad: 12 años
Puntos: 0
Respuesta: Ordenar StringBuilder()

Disculpa, se me coló un cero, No sería aList[i]
  #9 (permalink)  
Antiguo 14/06/2016, 03:51
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Ordenar StringBuilder()

Ok, ahora si que me cuadra más. Entonces tendrías que poner esto:

Código:
foreach (var item in aList.OrderBy(o=>o.Codigo))
{ ...
 ...
 Listado.AppendLine(itemCodigo+ " - " + item.ProductName);
 ...
 ...
 }
__________________
Aviso: No se resuelven dudas por MP!
  #10 (permalink)  
Antiguo 14/06/2016, 03:58
 
Fecha de Ingreso: abril-2012
Mensajes: 42
Antigüedad: 12 años
Puntos: 0
Respuesta: Ordenar StringBuilder()

foreach (var item in aList.OrderBy(o=>o.Codigo)) -> con esto entiendo que ordenas la lista directamente y con el foreach recorres ya esa lista ordenada no???
  #11 (permalink)  
Antiguo 14/06/2016, 04:06
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Ordenar StringBuilder()

Eso mismo :)
__________________
Aviso: No se resuelven dudas por MP!
  #12 (permalink)  
Antiguo 14/06/2016, 04:47
 
Fecha de Ingreso: abril-2012
Mensajes: 42
Antigüedad: 12 años
Puntos: 0
Respuesta: Ordenar StringBuilder()

muchas gracias
  #13 (permalink)  
Antiguo 14/06/2016, 07:31
 
Fecha de Ingreso: abril-2012
Mensajes: 42
Antigüedad: 12 años
Puntos: 0
Respuesta: Ordenar StringBuilder()

Cada linea del stringBuilder contiene algo como esto:
F00054 - Nombre1 - ROJO
F00034 - Nombre2 - VERDE
F00014 - Nombre3 - AZUL


Despues de darle vueltas, podria realizar el copiar el contenido del stringbuilder a una lista, es decir , recorrerme el stringbuilder por lineas y añadirlo a una lista de string, por ejemplo algo así(no se si estará bien). Lo que no tengo muy claro, es el foreach, ir recorriendo cada fila hasta que llega a un salto de linea :

list<string> lista = new list<string>();
StringBuilder sbuilder= new StringBuilder();
foreach(string linea in sbuilder.ToString().Split('\r\n').ToList())
{
lista.add(linea);
}

y cuando lo tengo en la lista, ordenarla de alguna manera por la primera columna???
  #14 (permalink)  
Antiguo 14/06/2016, 08:29
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Ordenar StringBuilder()

Entonces, para que lo concatenas si luego lo vas a deshacer?
__________________
Aviso: No se resuelven dudas por MP!
  #15 (permalink)  
Antiguo 14/06/2016, 08:41
 
Fecha de Ingreso: abril-2012
Mensajes: 42
Antigüedad: 12 años
Puntos: 0
Respuesta: Ordenar StringBuilder()

me he liado,sorry. Ya está solucionado. Lo he pasado a una lista y desde ahi lo he ordenado y ya está. Gracias

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:41.