在文本编写器上显示字典的键值对值

时间:2018-12-24 19:47:01

标签: c# dictionary key-value

当我写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);

为什么我仍然看不到实际的键和值?

3 个答案:

答案 0 :(得分:1)

KeysDictionary<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)

KeysValues都是集合。默认的ToString()将只返回其类型。如果要在字符串中包含键和值或字典本身,则应以某种方式对其进行序列化-最简单的方法是使用Newtonsoft库中的JsonConvert.SerializeObject