18

我有 C# Dictionary,我想从中创建一个.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");

我想要这个.csv文件输出:

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

我怎样才能做到这一点?

4

4 回答 4

35

也许是最简单的:

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

using LINQ至少需要添加和使用 .NET 3.5

于 2012-05-10T16:35:38.893 回答
10

尝试以下

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

注意:如果键或值元素可以包含;. 如果是这样,您将需要添加一个转义机制来处理它

于 2012-05-10T16:32:55.603 回答
7
  File.WriteAllLines(@"pathtocsv.csv", data.Select(x => x.Key + ";" + x.Value + ";")));
于 2012-05-10T16:38:35.613 回答
0

我的字典类似于上面提出的问题中的字典(由 user1387150 提出),除了 VALUE 部分是一个数组(双精度数,即双精度 [])。

调整上面 Jared 的解决方案,允许将 aDictionary<string, double[]>写入 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()));
        }
    }
于 2018-03-14T22:50:32.097 回答