Попытка загрузить несколько входных XML-файлов в iDictionary<string, Ojbect>

Я нашел один способ построить один словарь из одного входного файла, но он не учитывает несколько входных файлов. Чтобы перейти к следующему шагу: я хочу добавить дополнительные входные файлы в существующий хеш, а также попробовать что-то другое, этот код несколько близок к тому, что я хочу выполнить, но в нем все еще отсутствует синтаксис.

        foreach (string file in filePaths)
        {
            XDocument xdoc = XDocument.Load(file);

            allDict = (from m in xdoc.Descendants("msg")
                        .ToDictionary(m => m.Element("msgId").Value,
                                      m => new msg
                                      {
                                        msgId = m.Element("msgId").Value,
                                        msgType = m.Element("msgType").Value,
                                        name = m.Element("name").Value
                                      }
            )
        }

1 ответ

Решение

Создайте "главный" объект, затем добавьте значения, которые вы получаете из каждого файла.

Dictionary<string, msg> masterDictionary = new Dictionary<string, mgs>();

foreach (string file in filePath)
{
    XDocument xdoc = XDocument.Load(file);
    Dictionary<string, msg> fileDictionary = xdoc
        .Descendants("msg")
        .ToDictionary(m => m.Element("msgId").Value,
                      m => new msg
                           {
                               msgId = m.Element("msgId").Value,
                               msgType = m.Element("msgType").Value,
                               name = m.Element("name").Value
                           });

    //now insert your new values into the master
    foreach(var newValue in fileDictionary)
        masterDictionary.Add(newValue.Key, newValue.Value);
}
Другие вопросы по тегам