2012-05-10 6 views
7

Ich habe C# Dictionary und ich möchte eine .csv-Datei daraus erstellen. Zum Beispiel habe ich dieses Wörterbuch:C# Dictionary zu .csv

Dictionary<string, string> data = new Dictionary<string, string>(); 
data.Add("0", "0.15646E3"); 
data.Add("1", "0.45655E2"); 
data.Add("2", "0.46466E1"); 
data.Add("3", "0.45615E0"); 

Und ich will diese CSV-Datei ausgegeben:

0;0.15646E3; 
1;0.45655E2; 
2;0.46466E1; 
3;0.45615E0; 

Wie kann ich das tun?

+0

CSV steht verwenden für "kommagetrennte Werte". Was Sie dort haben, ist Semikolon getrennte Werte (was in Ordnung ist, ist es nur nicht CSV). – Servy

+0

@Servy Ich weiß, es ist dumm, aber in Frankreich CSV ist getrennt durch; Es ist also kein Fehler vom Autor – Guillaume86

+0

@ Guillaume86 Es gibt viele Dilimiters in Textdateien verwendet, Kommas sind üblich, aber andere verwenden Tabulatoren, Leerzeichen, Pipes ('|'), Semikolons, Bindestriche, Apostrophe, und ich bin sicher andere. Sie sind alle Text-getrennte Dateien, aber es sind nicht alle CSV-Dateien, sondern nur durch Kommas getrennte Textdateien. Es ist nichts falsch mit einem Semikolon als Trennzeichen. – Servy

Antwort

18

Vielleicht ist die einfachste:

String csv = String.Join(
    Environment.NewLine, 
    data.Select(d => d.Key + ";" + d.Value + ";") 
); 
System.IO.File.WriteAllText(pathToCsv, csv); 

Sie werden using LINQ hinzufügen müssen und mindestens .NET 3,5

+0

danke, funktioniert gut :) – user1387150

+0

Diese Lösung wird den Schlüssel und den Wert in der gleichen Zelle schreiben – Ateeq

8

Versuchen Sie, die folgenden

using (var writer = new StreamWriter(@"the\path\to\my.csv")) { 
    foreach (var pair in data) { 
    writer.WriteLine("{0};{1};", pair.Key, pair.Value); 
    } 
} 

Hinweis: Dies wird nicht funktionieren, wenn die Schlüssel oder Wert Elemente eine ; enthalten. Wenn dies der Fall müssen Sie eine Flucht Mechanismus hinzufügen zu handhaben, dass

+0

Dies wird den Schlüssel und den Wert in der gleichen Zelle hinzufügen, ändern Sie die; wie dieser writer.WriteLine ("{0}, {1},", pair.Key, pair.Value); – Ateeq

2
File.WriteAllLines(@"pathtocsv.csv", data.Select(x => x.Key + ";" + x.Value + ";")));