Как получить полезный объект List для этого кода в C #, используя LINQ to XML? - PullRequest
0 голосов
/ 14 декабря 2011

Новичок в C # здесь ....

У меня есть следующий код:

var xdoc = XDocument.Parse(xml);
            var result = xdoc.Root.Elements("item")
                .Select(itemElem => itemElem.Elements().ToDictionary(e => e.Name.LocalName, e => e.Value))
                .ToList();

, но когда я пытаюсь использовать result, как любой объект List,например result.Item, это не работает.

Что я делаю не так?Почему результат не возвращается как обычный объект List, который я могу манипулировать в своем коде?Нужно ли создавать из него еще один объект списка?

Я просто пытаюсь вывести первый элемент словаря из списка и использовать его.

Ответы [ 2 ]

1 голос
/ 14 декабря 2011

Это зависит от того, что вы ожидали . Ваш код в настоящее время производит List<Dictionary<string,string>>. Таким образом, каждая запись в списке будет словарем.

Вы можете получить доступ к каждому словарю так же, как и к элементам списка, т.е.

string firstResult = result[0]["key"];

Первая часть [0] является индексатором списка, вторая часть ["key"] является индексатором словаря - это вернет значение ключа "key" первого словаря в вашем списке.

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

0 голосов
/ 14 декабря 2011

Это List<Dictionary<String, String>>. Каждый элемент в списке - это словарь.

Было бы полезно узнать, что вы хотите с ним сделать.

Но некоторые примеры:

//Get the First Dictionary Item, then Iterate through all the items in the first dictionary.
var firstItem = results.First();
foreach(var kvPair in firstItem)
{
    var key = kvPair.Key;
    var val = kvPair.Value;
}

//Loop through each Dictionary getting values from each.
foreach (var result in results)
{
    var wordValue = result["word"];
    var defValue = result["def"];
}

//Create a list of all the values for the Elements with the key "word".
var valuesForAllWords = 
  results
  .Select(r => r["word"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...