Чтение значений внутри словаря - PullRequest
2 голосов
/ 12 октября 2019

Я использую Data Datatables и возвращаю данные из Editor в контроллер и пытаюсь прочитать значения из так называемого Dictionary<string,object>. Может кто-нибудь посоветовать, как это сделать. Я читал, что Словарь должен быть десериализован, но я не очень уверен, как это делается. Я включаю картину значений, которые я пытаюсь прочитать. Спасибо. введите описание изображения здесь

Я прочитал в контроллере данные, возвращенные через e.Values:

editor.PostCreate += (sender, e) => t = Task.Run(() => Add(intContTpe, lngContIdx, e.Values));
internal static void Add(int intContTpe, long lngContIdx, object objPCEAValues)
{
    Dictionary<string, object> dicVoDaCDRFormats = new Dictionary<string, object>();
    if (!dicPCEAValues.ContainsKey("CustomerVoiceCLICDRFormats.0"))
    {
        dicVoDaCDRFormats = ((Dictionary<string, object>)dicPCEAValues["CustomerVoiceCLICDRFormats"]);

        PrintToOutput("", ((Dictionary<string, object>)dicPCEAValues["CustomerVoiceCLICDRFormats"])["0"]);
    }
}

1 Ответ

0 голосов
/ 12 октября 2019

Каждое значение в dicVoDaCDRFormats является собственным словарем. Вам также необходимо открыть эти словари.

Проверьте, дает ли это ожидаемый результат.

foreach (KeyValuePair<string, object> items in dicVoDaCDRFormats) 
{
    if (items.Value is Dictionary<string, object> innerDict)
        foreach (var item in innerDict)
            PrintToOutput("", items.Value); 
}

Этот тип работы с типом object небезопасен. Вы можете добавить проверку типов для других деталей с ключевыми словами is и as, чтобы быть в безопасности. Но это зависит от ситуации, с которой вы работаете.

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