回答
试试这个扩展方法:
public static string ToDebugString<TKey, TValue> (this IDictionary<TKey, TValue> dictionary)
{
return "{" + string.Join(",", dictionary.Select(kv => kv.Key + "=" + kv.Value).ToArray()) + "}";
}
可能:
string.Join
(
",",
someDictionary.Select(pair => string.Format("{0}={1}", pair.Key.ToString(), pair.Value.ToString())).ToArray()
);
首先,你遍历每个键值对,并格式化,你想看到的字符串,后来转换成数组,并加入到一个单一的字符串。
如何扩展法例如:
public static string MyToString<TKey,TValue>
(this IDictionary<TKey,TValue> dictionary)
{
if (dictionary == null)
throw new ArgumentNullException("dictionary");
var items = from kvp in dictionary
select kvp.Key + "=" + kvp.Value;
return "{" + string.Join(",", items) + "}";
}
实施例:
var dict = new Dictionary<int, string>
{
{4, "a"},
{5, "b"}
};
Console.WriteLine(dict.MyToString());
输出:
{4=a,5=b}
呼气并指定它是一种扩展方法:D – 2011-05-05 14:23:59
你可以通过字典的键,并打印出来环连同价值...
public string DictToString(Dictionary<string, string> dict)
{
string toString = "";
foreach (string key in dict.Keys)
{
toString += key + "=" + dict[key];
}
return toString;
}
没有方便的方法。你将不得不推出自己的。
public static string ToPrettyString<TKey, TValue>(this IDictionary<TKey, TValue> dict)
{
var str = new StringBuilder();
str.Append("{");
foreach (var pair in dict)
{
str.Append(String.Format(" {0}={1} ", pair.Key, pair.Value));
}
str.Append("}");
return str.ToString();
}
这是有用的,因为它在.NET3.5之前的代码上工作(不支持linq) – 2013-12-04 12:40:47
我得到了这个简单的答案..使用JavaScriptSerializer
类为此。
你可以简单地使用Dictionary对象作为参数调用Serialize方法。
例子:
var dct = new Dictionary<string,string>();
var js = new JavaScriptSerializer();
dct.Add("sam","shekhar");
dct.Add("sam1","shekhar");
dct.Add("sam3","shekhar");
dct.Add("sam4","shekhar");
Console.WriteLine(js.Serialize(dct));
输出:
{"sam":"shekhar","sam1":"shekhar","sam3":"shekhar","sam4":"shekhar"}
如果你想使用LINQ的,你可以尝试这样的事:
String.Format("{{{0}}}", String.Join(",", test.OrderBy(_kv => _kv.Key).Zip(test, (kv, sec) => String.Join("=", kv.Key, kv.Value))));
其中 “测试” 你的字典。注意Zip()的第一个参数只是一个占位符,因为null不能被传递)。
如果格式并不重要,尝试
String.Join(",", test.OrderBy(kv => kv.Key));
如果你只是想序列化调试的目的,这将给你像
[key,value], [key,value],...
我喜欢Linq表达式@Tim提供的更多内容。 – seairth 2011-05-05 14:58:03
,较短的方法是:
var asString = string.Join(";", dictionary);
这是可行的,因为IDictionary<TKey, TValue>
是ICollection<KeyValuePair<TKey, TValue>>
。
+1不真实漂亮,但它的工作原理很简单。 – 2014-06-03 18:49:39
工程很好。非常感谢你。 – 2016-04-28 13:44:42
太棒了!这是我一生的何去何从? – Tony 2017-01-27 17:41:42
我喜欢ShekHar_Pro使用串行器的方法。唯一的建议是使用json.net来序列化,而不是内置的JavaScriptSerializer,因为它比较慢。
这应该是一个评论,而不是一个答案。请等到您有足够的信誉发表评论,而不是垃圾回答部分。 – Chris 2014-10-20 22:20:42
另一种解决方案:文本
var dic = new Dictionary<string, double>()
{
{"A", 100.0 },
{"B", 200.0 },
{"C", 50.0 }
};
string text = dic.Select(kvp => kvp.ToString()).Aggregate((a, b) => a + ", " + b);
值:[A, 100], [B, 200], [C, 50]
- 1. 将字符串转换为python字典
- 2. Python将字符串转换为字典
- 3. 将字典转换为字符串
- 4. 将python字典转换为字符串
- 5. 将字典<字符串,字符串>转换为数组
- 6. 字符串字典转换
- 7. 字符串转换字典
- 8. 将字符串转换成字典
- 9. 将一个字符串转换字典
- 10. 将字符串转换为字符串后无法反转字符串Array
- 11. 将字典的字符串表示转换为真正的字典
- 12. 字符串数据转换为字典
- 13. 字符串转换为字典
- 14. 将字符串中的每个字符转换为字典键
- 15. 将字符串转换为带反斜杠的字符串
- 16. 将字符串转换为字符串
- 17. 简单的方法来将字典<字符串,字符串>转换为xml,反之亦然
- 18. 有条件地将字符串转换为一个字典在Python
- 19. 将所有本地化字符串转换为JSON的方法?
- 20. 将字典<对象,字符串>转换为字典<字符串,字符串>
- 21. 将字符串转换为OTAN拼音字母表的字典
- 22. 将字符串转换为int或者反转更有效率?
- 23. 在c#中将字典转换为字典中的字符串<字符串,字典<string,int>>?
- 24. 如何将字符串转换为IP地址,反之亦然
- 25. 将字符串转换为正确的日期字符串
- 26. 将字符串转换为字符,空格字符未正确转换
- 27. 将字符串转换为
- 28. 将字符串转换为“_”
- 29. 将字符串转换为?
- 30. 将字符串转换为字符
这是一个只在调试器的可视化?或者这个字符串是面向用户的? – TreDubZedd 2011-05-05 14:18:29
我认为这是由JSON串行器完成的很好 – 2011-05-05 14:23:41
请参阅http://stackoverflow.com/questions/3639094/most-efficient-dictionaryk-v-tostring-with-formatting – 2011-10-07 11:52:51