在Visual Studio中调试C#代码时,我可以Dictionary<string,string>轻松导出xml,csv或text格式吗?
我想导出一个Dictionary<string,string>excel并看到2列字符串.
在VS中调试这样的dict是很麻烦的.
如果有任何添加,这简化了可视化,也可以.
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文件.
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)
也许这足以进行调试.
不要低估这种事情的直接窗口的力量.
我的建议是在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"选项使其正确处理多行.然后你可以从即时窗口复制/粘贴,你很高兴.