Подтвердить что ты не робот

В Visual Studio при отладке кода С# я могу легко экспортировать словарь <string, string> в xml, csv или текстовый формат?

В Visual Studio при отладке кода С# я могу легко экспортировать Dictionary<string,string> в xml, csv или текстовый формат?

Я хотел бы экспортировать Dictionary<string,string> в excel и увидеть 2 столбца строк.

Отладка такого dict в VS громоздка.

Если есть какое-либо добавление, которое упрощает визуализацию, это тоже нормально.

4b9b3361

Ответ 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" заставляет ее правильно обрабатывать многострочные линии. Затем вы можете скопировать/вставить из непосредственного окна, и вам будет хорошо идти.