2012-03-20 17 views
6

He utilizado el autor de archivos para leer en un archivo .csv, entonces necesito dividir los valores y ponerlos en un diccionario. Hasta ahora he:Cargando un archivo .csv en el diccionario, sigo recibiendo el error "no se puede convertir de 'cadena []' a 'cadena'"

namespace WindowsFormsApplication2 
{ 
public partial class Form1 : Form 
{ 
Dictionary<string, string> dict = new Dictionary<string, string>(); 
    public Form1() 
    { 
     InitializeComponent(); 
    } 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     using (StreamReader reader = new StreamReader("textwords0.csv")) 
     { 
      string line; 
      while ((line = reader.ReadLine()) != null) 
      { 
       string[] parts = line.Split(','); 
       dict.Add(parts[0], parts[1]); 
      } 
     } 
    } 

sigo obteniendo el error "No se puede convertir de 'string []' a 'cadena'", pero no puedo encontrar la manera de solucionarlo.

¡Gracias de antemano!

actualización: ... Accidentalmente dejé el archivo csv abierto y funciona ahora, perdón por perder el tiempo chicos pensaron que tenía una hoja de cálculo diferente abierta, algunos consejos muy útiles aunque gracias por toda la ayuda!

+3

¿Qué línea le da el error? ¿La línea dict.Add? –

+0

¿Podemos ver la fuente? (textwords0.csv)? –

+0

VS dice la línea 33, que es la última}. – jesusjuice

Respuesta

19

Si está utilizando .NET 4.0 , el siguiente es muy breve y debe lograr la misma cosa:

var dict = File.ReadLines("textwords0.csv").Select(line => line.Split(',')).ToDictionary(line => line[0], line => line[1]); 
+2

no estoy seguro de que esto funcione si tiene datos con ',' en ellos. necesitas un analizador csv aquí. – nakhli

+2

esto es frágil ya que el valor podría estar entre comillas si contiene una coma '(" esto es, un valor ")' - el valor se dividirá por la mitad –

+0

Es cierto que no se verifica si la coma está en una cotización o los datos, pero @jesusjuice no parece preocupado por eso. –

0

el error es en realidad debido a la '', que está ingresando. Necesita una "serie" de personajes para partir. Aquí hay un método de ejemplo de división utilizando string.split.

string[] parts = line.Split(new string[] { "," }, StringSplitOptions.None); 

Espero que esto ayude. esto supone que esta es la línea de la que proviene el error que no ha especificado.

+0

aparentemente es la línea 33, que es la última}. Soy bastante nuevo en la programación en general, por lo que encontrar esto un poco confuso. ¡Gracias! – jesusjuice

+0

Esto todavía no funciona, gracias por la ayuda de todos modos. – jesusjuice

Cuestiones relacionadas