在Visual Studio中调试C#代码时,我可以轻松地以xml,csv或text格式导出List或Dictionary吗?

Fre*_*red 24 c# visual-studio

在Visual Studio中调试C#代码时,我可以Dictionary<string,string>轻松导出xml,csv或text格式吗?

我想导出一个Dictionary<string,string>excel并看到2列字符串.

在VS中调试这样的dict是很麻烦的.

如果有任何添加,这简化了可视化,也可以.

txt*_*elp 23

您可以将手表添加到词典(或列表),然后在监视窗口下,您可以扩展整个词典(或列表),右键单击,全,复制

出口

然后在Excel中,您可以粘贴数据,它应自动格式化:

高强

您也可以直接将此数据粘贴到另一个文本编辑器中(或者直接在监视窗口中查看数据).

希望能有所帮助.


Blo*_*ard 14

您可以使用这样的简单代码段:

var output = dict.Select(kv => string.Format("{0},{1}", kv.Key, kv.Value));
File.WriteAllLines("output.csv", output);
Run Code Online (Sandbox Code Playgroud)

如评论中所述,如果您的字典键或值包含任何逗号或换行符,则需要稍微复杂一些的内容来生成有效的CSV文件.

  • 重要的是要注意,如果输入包含逗号或换行符,这种天真的方法可能会导致输出模糊. (2认同)
  • 是的,也是如此.我开始用代码编写这个答案来引用字段和转义值内的引号等,但它开始超越"简单代码段"领域. (2认同)

Zor*_*vat 9

Dictionary<TKey, TValue>实施IEnumerable<KeyValuePair<TKey, TValue>>.出于调试目的,您可以使用LINQ查询将字典转换为多行字符串:

string description =
    string.Join(Environment.NewLine,
        dict.Select(tuple => $"{tuple.Key} => {tuple.Value}").ToArray());
Run Code Online (Sandbox Code Playgroud)

也许这足以进行调试.


Reg*_*lue 5

使用立即窗口

不要低估这种事情的直接窗口的力量.

我的建议是在Dictionary中添加一个扩展方法来创建你的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();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是扩展方法的C#小提琴:

https://dotnetfiddle.net/f8xQjs

并在即时窗口中使用它:

foo.ToCsvFormat(),nq
Run Code Online (Sandbox Code Playgroud)

",nq"选项使其正确处理多行.然后你可以从即时窗口复制/粘贴,你很高兴.