C#字典到.csv

C#字典到.csv,c#,file,csv,C#,File,Csv,我有C#字典,我想从中创建一个.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"); 我如何才能做到这一点?请尝试以下方法 usin

我有C#字典,我想从中创建一个.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");
我如何才能做到这一点?

请尝试以下方法

using (var writer = new StreamWriter(@"the\path\to\my.csv")) {
  foreach (var pair in data) {
    writer.WriteLine("{0};{1};", pair.Key, pair.Value);
  }
}
注意:如果键或值元素可以包含
,则此操作将失败。如果是这样,您需要添加一个转义机制来处理该问题,这可能是最简单的:

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

您需要使用LINQ添加
,并至少使用.NET 3.5

我的字典与上面提出的问题(由用户1387150提供)中的字典类似,只是值部分是一个数组(由双精度组成,即双精度[])

  File.WriteAllLines(@"pathtocsv.csv", data.Select(x => x.Key + ";" + x.Value + ";")));
通过调整上述Jared的解决方案,可以将
词典
写入csv,如下所示:

    using (var writer = new StreamWriter(@"C:\path\test.csv"))
    {
        foreach (var pair in data)
        {
            writer.WriteLine("{0},{1};", pair.Key, String.Join(",", pair.Value.Select(x => x.ToString()).ToArray()));
        }
    }

CSV代表“逗号分隔值”。你有的是分号分隔的值(这很好,只是不是CSV)。@Servy我知道这很愚蠢,但在法国CSV是用;所以这并不是真正的错误author@Guillaume86文本文件中使用了许多限定符,逗号很常见,但其他一些使用制表符、空格、管道(“|”)、分号、破折号、撇号,我相信还有其他一些。它们都是文本分隔的文件,但不是所有CSV文件,只有逗号分隔的文本文件。分号作为分隔符没有什么错。@Servy:请阅读维基百科文章中的“缺少标准”部分:在法国和其他一些国家,他们使用小数点作为逗号而不是句点,因此即使是“CSV”文件也不会用逗号分隔(MS Excel的本地化版本将使用“;”作为分隔符,例如,当您另存为csv时)。此解决方案将在同一单元格中写入键和值。此解决方案将在同一单元格中添加键和值,将;更改为,与此WriteLine类似(“{0},{1},”,pair.key,pair.value);
    using (var writer = new StreamWriter(@"C:\path\test.csv"))
    {
        foreach (var pair in data)
        {
            writer.WriteLine("{0},{1};", pair.Key, String.Join(",", pair.Value.Select(x => x.ToString()).ToArray()));
        }
    }