Словарь С# для CSV

У меня есть словарь С#, и я хочу создать из него 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;

Как я могу это сделать?

Ответ 1

Может быть, самый простой:

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

Вам нужно будет добавить using LINQ и использовать как минимум .NET 3.5

Ответ 2

Попробуйте выполнить

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

Примечание. Это не сработает, если элементы ключа или значения могут содержать ;. Если это так, вам нужно будет добавить механизм экранирования для обработки этого

Ответ 3

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

Ответ 4

Мой словарь был похож на тот, что был в вопросе, заданном выше (пользователем1387150), за исключением того, что часть VALUE представляла собой массив (из парных разрядов, т.е. двойной []).

Настройка решения Jared выше, позволяет Dictionary<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()));
        }
    }