回答
試試這個擴展方法:
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. 將字典轉換爲字符串
- 2. Python將字符串轉換爲字典
- 3. 將python字典轉換爲字符串
- 4. 將字符串轉換爲字典python
- 5. 將字符串轉換爲python字典
- 6. 將字典<字符串,字符串>轉換爲數組
- 7. 字符串轉換字典
- 8. 字符串字典轉換
- 9. 將一個字符串轉換字典
- 10. 將字符串轉換成字典
- 11. 將字符串轉換成字典
- 12. 將字符串轉換爲字符串後無法反轉字符串Array
- 13. 將字典的字符串表示轉換爲真正的字典
- 14. C#字符串轉換爲字典
- 15. 字符串數據轉換爲字典
- 16. 字符串轉換爲字典
- 17. 如何將字符串轉換爲字典轉爲蟒蛇
- 18. 將字符串中的每個字符轉換爲字典鍵
- 19. 將字符串轉換爲有序字典?
- 20. Python將字符串轉換爲字符串,反之亦然
- 21. 將字符串轉換爲帶反斜槓的字符串
- 22. 將字符串轉換爲字符串
- 23. 將字符串轉換爲字符串
- 24. 將字符串轉換爲字符串
- 25. 簡單的方法來將字典<字符串,字符串>轉換爲xml,反之亦然
- 26. 有條件地將字符串轉換爲一個字典在Python
- 27. 將所有本地化字符串轉換爲JSON的方法?
- 28. 將字典<對象,字符串>轉換爲字典<字符串,字符串>
- 29. 將字符串轉換爲OTAN拼音字母表的字典
- 30. 將字符串轉換爲int,int轉換爲字符串
這是一個只在調試器的可視化?或者這個字符串是面向用戶的? – 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