Показать ключевые значения пары значений словаря в Text Writer - PullRequest
0 голосов
/ 24 декабря 2018

Когда я пишу в журналы трассировки CRM, я отслеживаю, чтобы увидеть значения словаря.

Я вижу следующее:

Key: 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 голосов
/ 24 декабря 2018

Свойство 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));
0 голосов
/ 24 декабря 2018

Как насчет:

foreach(var keyValuePair in myDictionary)
       tracer.Trace("Key: {0} Value: {1}", keyValuePair.Key, keyValuePair.Value);
0 голосов
/ 24 декабря 2018

Обе Keys и Values являются коллекциями.Значение по умолчанию ToString() просто вернет их тип.Если вы хотите включить в строку ключи и значения или сам словарь, вам следует каким-то образом его сериализовать - самый простой способ - использовать JsonConvert.SerializeObject из библиотеки Newtonsoft.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...