Мой запрос LINQ возвращает только 1 результат - PullRequest
3 голосов
/ 20 февраля 2011

Мой запрос LINQ возвращает только первый результат (класс).Вот код, который я использую:

        XDocument xmlDoc = XDocument.Load("Decks/Test.xml");
        List<Cards> tempdeck = (from deck in xmlDoc.Elements("Deck")
                                select new Cards
                                 {
                                     Name = deck.Element("Type").Value

                                 }).ToList<Cards>();

        foreach (var item in tempdeck)
        {
            ((MessageBroker)App.Current.Resources["MessageBroker"]).GameLog.Add(item.Name.ToString());

        }

Вот так выглядит мой XML-файл:

<Deck>
  <Type>
    <Name>Class</Name>
  </Type>
  <Type>
    <Name>stsfs</Name>
  </Type>
  <Type>
    <Name>Class</Name>
  </Type>
  <Type>
      <Name>Class</Name>
    </Type>
</Deck>

Я форматирую его таким образом, потому что, когда я заставляю его работать, яхочу добавить в запрос несколько свойств, а не только имя.

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 20 февраля 2011

Это не ясно из вашего образца, но, похоже, у вас есть один Deck элемент с несколькими Type дочерними элементами.Ваш код предполагает противоположное, то есть несколько колод, каждая с одним (или одним интересным) типом-потомком.

Попробуйте вместо этого:

( from type in xmlDoc.Element("Deck").Elements("Type")
  select new Cards { Name = type.Value }
).ToList()

"Карты" создаются из каждойtype-child единственной колоды.

Если у вас do есть несколько колод, следуйте ответу Марка Сидаде.

1 голос
/ 20 февраля 2011

В своем запросе вы выбираете только один элемент Deck, а затем выбираете первый элемент Type.Вам нужно выбрать из каждого Type элемента:

    List<Cards> tempdeck = (from deck in xmlDoc.Elements("Deck")
                            from type in deck.Elements("Type")
                            select new Cards
                             {
                                 Name = type.Value

                             }).ToList<Cards>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...