Hola a todos, primero que nada, me presento, soy rodrigo cordova, uso el nick de U2_Caparzo, actualmente soy estudiante de 17 años(estoy en mi ultimo año del liceo) y uno de mis intereses es continuar como estudiante de ingenieria informatica.
Paso bastante tiempo, editando un servidor de un juego(conquer), los cuales todos estan escritos en C#. Vine a este foro, porque en el foro que participaba en desarrollo de estos servidores, no hay nadie que tenga grandes conocimientos, de hecho yo escribi algo basico para que algunos aprendieran de C#.
Bueno ahora al grano.
El otro dia, estuve tratando de ordenar un archivo de texto llamado ItemAdd.ini
el archivo solo son numeros por ejemplo
123510 12 4214 32141 421421 4213 5436 534 12
los 2 primeros numeros son los que estoy tratando de ordenar, o sea que a partir de esos trato de ordeanr el archivo
el primer numero se repite siempre 12 veces
por ejemplo
123510 1 ......
123510 2 ......
ahora, estan todos desordenados, asi que lo que hice fue 2 maneras de ordenarlo que es por el primer numero o el segundo numero.
Les proveere el codigo que estoy usando, como estructura generalizada, porque no me encuentro en mi Laptop y no tengo C# aca.
se que obviamente la ineficiencia esta en el uso masivo de ciclos asi que esperaria algo de ayuda con eso.
bueno, lo que hice fue esto
tengo un List<string> llamado IDsque almacenara todas las ID (primer numero) y un byte llamado Maximo plus = 12; (el maximo base del segundo numero)
creo un array de strings de todas las lineas con File.ReadAllLines
luego
foreach(string linea in lineas)//lineas es el array anterior
{
string[] sp = linea.Split(' ');
if(!IDs.Contains(sp[0]))
IDs.Add(sp[0]);
if(Maximo < byte.Parse(sp[1]))
Maximo = byte.Parse(sp[1]);
}
entonces aqui viene lo feo, son 3 ciclos en total... por cierto cree un stringbuilder sb
foreach(string ID in IDs)//el List<string> que cree antes
{
for(byte i = 1; i <= Maximo; i++);
{
foreach(string linea in lineas)//del array al leer el archivo
{
if(Line.StartsWith(ID + " " + i.ToString() + " ")/*agrego un espacio al final porque el 1 se repetiria en 1, 10, 11, y 12, etc...*/
sb.AppendLine(linea);
}
}
}
y luego escribo el stringbuilder al archivo con StreamWriter.
lo que pasa es que tarda mucho ademas de que usa bastante memoria, asi que algo de guia con esto se los agradeceria demasiado. he escuchado algo de OrderBy en List<> pero no entendi mucho como usarlo
gracias por adelantado