Словарь С# для 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()));
}
}