В Visual Studio при отладке кода С# я могу легко экспортировать словарь <string, string> в xml, csv или текстовый формат?
В Visual Studio при отладке кода С# я могу легко экспортировать Dictionary<string,string>
в xml, csv или текстовый формат?
Я хотел бы экспортировать Dictionary<string,string>
в excel и увидеть 2 столбца строк.
Отладка такого dict в VS громоздка.
Если есть какое-либо добавление, которое упрощает визуализацию, это тоже нормально.
Ответы
Ответ 1
Вы можете добавить часы в словарь, а затем в Watch Window вы сможете расширить весь словарь, щелчок правой кнопкой мыши, выбрать все, копировать
![Экспорт]()
Затем в Excel вы можете вставлять данные, и он должен автоматически форматироваться:
![Excel]()
Вы также можете просто вставить эти данные непосредственно в другой текстовый редактор (или просто просмотреть данные непосредственно в окне просмотра).
Надеюсь, что это поможет.
Ответ 2
Вы можете использовать простой фрагмент, подобный этому:
var output = dict.Select(kv => string.Format("{0},{1}", kv.Key, kv.Value));
File.WriteAllLines("output.csv", output);
Как отмечено в комментариях, если ваши словарные ключи или значения содержат какие-либо запятые или новые строки, вам понадобится нечто более сложное, чтобы генерировать действительный CSV файл.
Ответ 3
Dictionary<TKey, TValue>
реализует IEnumerable<KeyValuePair<TKey, TValue>>
. Для целей отладки вы можете преобразовать словарь в многострочную строку с помощью запроса LINQ:
string description =
string.Join(Environment.NewLine,
dict.Select(tuple => $"{tuple.Key} => {tuple.Value}").ToArray());
Возможно, этого будет достаточно для отладки.
Ответ 4
Использовать окно немедленного доступа
Не стоит недооценивать силу непосредственного окна для такого рода вещей.
Мой совет заключается в добавлении метода расширения в словарь, который создает ваш файл csv, а затем в окне "Немедленное" вы можете вызывать его всякий раз и везде, где вам нужно.
public static class DictionaryExtensions
{
public static string ToCsvFormat<TK,TV>(this IDictionary<TK,TV> dict)
{
var sw = new StringWriter();
foreach(var kv in dict)
{
sw.WriteLine($"{kv.Key}, {kv.Value}");
}
return sw.ToString();
}
}
Здесь сценарий С# метода расширения в действии:
https://dotnetfiddle.net/f8xQjs
И использовать его в ближайшем окне:
foo.ToCsvFormat(),nq
Опция ", nq" заставляет ее правильно обрабатывать многострочные линии. Затем вы можете скопировать/вставить из непосредственного окна, и вам будет хорошо идти.