none
Pasar un archivo txt a una lista RRS feed

  • Pregunta

  • Hola Buenas Tengo un problema Quisiera saber como pasar un archivo txt a una List (Lo Que tengo adentro son nombres y edad) Y ala vez quiero ordenarlos por edad
     StreamReader lectura = new StreamReader("PERSONASGuardadas.txt");
     List<string> lista1 = new List<string>();
     Console.WriteLine(lectura.ReadToEnd());
     lista1.Add(lectura);

    No comprendo bien como seria para guardarlo adentro dela lista

    • Editado Gastion jueves, 7 de noviembre de 2019 19:36
    jueves, 7 de noviembre de 2019 19:32

Respuestas

  • hola

    No se trabaja de esa forma, vas a tener que cortart los datos de cada linea

    string[] lineas = File.ReadAllLines("ruta archivo"); List<Item> Items = new List<Item>(); foreach(string linea in lineas){ string[] partes = linea.Split(','); Item item = new Item() { Nombre = parte[0], Edad = int.Parse(parte[1])};

    Items.Add(item); }

    var result = Items.OrderBy(x=> x.Edad).ToList();

    pero necesitas de una clase para separar los datos

    public class Item{
    
        public string Nombre {get;set;}
    
       public int Edad {get;set;}
    
    }


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Pablo RubioModerator jueves, 7 de noviembre de 2019 21:47
    • Marcado como respuesta Gastion viernes, 8 de noviembre de 2019 2:49
    jueves, 7 de noviembre de 2019 19:49
  • Fíjate un poco con cuidado en lo que estás haciendo:

     StreamReader lectura = new StreamReader("PERSONASGuardadas.txt");
     List<string> lista1 = new List<string>();
     [...]
     lista1.Add(lectura);

    Estás intentando añadir una variable que es de tipo Stream a una lista que has declarado como lista de string. No es lo mismo un Stream que un String. No importa que sea posible extraer Strings de dentro del Stream; el List no lo sabe. Esto es genérico para siempre que programes: no puedes pasarle cualquier cosa a cualquier método esperando que el método sepa qué hacer con esa cosa. Solo puedes pasarle lo que el método tiene previsto que le pases. Y el Add de la clase List<algo> solo espera que le pases un algo.

    Si lo que quieres es pasar el contenido del fichero a una lista de strings, con una linea del fichero en cada string de la lista, puedes hacerlo así:

    List<string> lista1 = new List<string>();
    lista1.AddRange(File.ReadAllLines("PERSONASGuardadas.txt"));

    Pero si no requieres que sea un List sino que te vale con un array, entonces puedes simplificarlo todavía más:

    string[] lineasDelFichero = File.ReadAllLines("PERSONASGuardadas.txt");

    • Marcado como respuesta Gastion viernes, 8 de noviembre de 2019 2:51
    jueves, 7 de noviembre de 2019 21:21
    Moderador

Todas las respuestas

  • hola

    No se trabaja de esa forma, vas a tener que cortart los datos de cada linea

    string[] lineas = File.ReadAllLines("ruta archivo"); List<Item> Items = new List<Item>(); foreach(string linea in lineas){ string[] partes = linea.Split(','); Item item = new Item() { Nombre = parte[0], Edad = int.Parse(parte[1])};

    Items.Add(item); }

    var result = Items.OrderBy(x=> x.Edad).ToList();

    pero necesitas de una clase para separar los datos

    public class Item{
    
        public string Nombre {get;set;}
    
       public int Edad {get;set;}
    
    }


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Pablo RubioModerator jueves, 7 de noviembre de 2019 21:47
    • Marcado como respuesta Gastion viernes, 8 de noviembre de 2019 2:49
    jueves, 7 de noviembre de 2019 19:49
  • Fíjate un poco con cuidado en lo que estás haciendo:

     StreamReader lectura = new StreamReader("PERSONASGuardadas.txt");
     List<string> lista1 = new List<string>();
     [...]
     lista1.Add(lectura);

    Estás intentando añadir una variable que es de tipo Stream a una lista que has declarado como lista de string. No es lo mismo un Stream que un String. No importa que sea posible extraer Strings de dentro del Stream; el List no lo sabe. Esto es genérico para siempre que programes: no puedes pasarle cualquier cosa a cualquier método esperando que el método sepa qué hacer con esa cosa. Solo puedes pasarle lo que el método tiene previsto que le pases. Y el Add de la clase List<algo> solo espera que le pases un algo.

    Si lo que quieres es pasar el contenido del fichero a una lista de strings, con una linea del fichero en cada string de la lista, puedes hacerlo así:

    List<string> lista1 = new List<string>();
    lista1.AddRange(File.ReadAllLines("PERSONASGuardadas.txt"));

    Pero si no requieres que sea un List sino que te vale con un array, entonces puedes simplificarlo todavía más:

    string[] lineasDelFichero = File.ReadAllLines("PERSONASGuardadas.txt");

    • Marcado como respuesta Gastion viernes, 8 de noviembre de 2019 2:51
    jueves, 7 de noviembre de 2019 21:21
    Moderador