2012-03-20 5 views
6

ストリームリーダーを使用して.csvファイルを読み込んだ後、値を分割する必要がありますそれらを辞書に入れます。これまで私が持っている:私はエラーを得続ける辞書に.csvファイルをロードすると、「文字列[]から '文字列'に変換できません」というエラーメッセージが表示される

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]); 
      } 
     } 
    } 

「『文字列』に 『[]文字列』から変換できません」が、それを修正する方法を考え出す傾けます。

ありがとうございます!

更新: ...私は誤ってcsvファイルを開いたままにしていましたが、時間を無駄にしてしまって残念です。別のスプレッドシートが開いていると思っていました。

+3

どのラインからエラーが出ますか? dict.Add行? –

+0

ソースを表示できますか? (textwords0.csv)? –

+0

VSは最後の行33を言っています}。 – jesusjuice

答えて

19

次が本当に簡潔であり、同じことを行う必要があり、.NET 4.0を使用している場合:

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

「、」を含むデータがある場合は、これが機能するかどうかわかりません。ここにCSVパーサーが必要です。 – nakhli

+2

コンマが含まれている場合、値が引用符で囲まれている可能性があるため、これは壊れやすい( ''これは値です) ' - 値は半分に分割されます –

+0

コンマが引用符またはデータが、@ jesusjuiceはそれを心配していないようです。 –

0

エラーは、あなたが入力している「」理由の実際です。分割する文字の「配列」が必要です。次に、string.splitを使用して分割する方法の例を示します。

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

これが役立ちます。 これは、指定されていないエラーが発生している行であると推測しています。

+0

最後に33行目です。私はこれを少し紛らわしかったので、一般的にプログラミングするのはかなり新しいです。ありがとう! – jesusjuice

+0

これはまだ動作していません、とにかく助けてくれてありがとう。 – jesusjuice

関連する問題