当我写CRM的跟踪日志时,我正在跟踪以查看字典的值。
我看到以下内容:
键: System.Collections.Generic.Dictionary`2 + KeyCollection [System.String,System.Double] 值: System.Collections.Generic.Dictionary`2 + ValueCollection [System.String,System.Double]
我查看了以前的答案并说要使用:
myDictionary.Keys, myDictionary.Values
我做了以下工作:
tracer.Trace("Key: {0} Value: {1}", currentSiblingHours.Keys, currentSiblingHours.Values);
为什么我仍然看不到实际的键和值?
答案 0 :(得分:1)
Keys
的Dictionary<TKey, TValue>
属性返回一个KeyCollection
,并且您的代码正在对该对象上尚未实现的对象上调用ToString()
,因此,为什么要使用类型名称在您的输出中。您可以将字典序列化为JSON:
tracer.Trace("Data: {0}", JsonConvert.SerializeObject(currentSiblingHours);
或者您可以使用string.Join
:
tracer.Trace("Key: {0} Value: {1}",
string.Join(", ", currentSiblingHours.Keys),
string.Join(", ", currentSiblingHours.Values));
答案 1 :(得分:1)
怎么样:
foreach(var keyValuePair in myDictionary)
tracer.Trace("Key: {0} Value: {1}", keyValuePair.Key, keyValuePair.Value);
答案 2 :(得分:0)
Keys
和Values
都是集合。默认的ToString()
将只返回其类型。如果要在字符串中包含键和值或字典本身,则应以某种方式对其进行序列化-最简单的方法是使用Newtonsoft库中的JsonConvert.SerializeObject
。