none
LINQ - Join RRS feed

  • Вопрос

  • Здравствуйте. У меня проблема с LINQ-запросом. Выполняю его по двум xml-файлам. Вот код:

    return user = lastXML.Descendants("Port").Select(e =>
                     new Model.BasePort
                     {
                         CityName = e.Attribute("Name").Value,
                         Country = e.Attribute("Country").Value,
                         Limit = Int16.Parse(e.Attribute("Limit").Value),
                         pointH = float.Parse(e.Attribute("KoordZ").Value),
                         pointX = float.Parse(e.Attribute("KoordX").Value),
                         poinY = float.Parse(e.Attribute("KoordY").Value),
                         Map = e.Attribute("Map").Value,
                         Ships = e.Descendants("Ships").Join(lastXML2.Descendants("Player"),
                                  post => post.Element("ID_Ship").Value,
                                  meta => meta.Element("ID").Value,
                                  (post, meta) => new Model.BaseShip
                                          (
                                          int.Parse(meta.Element("ID").Value),
                                          meta.Element("objectName").Value,
                                          (Model.BaseShip.SwipeDirection)Enum.Parse(typeof(Model.BaseShip.SwipeDirection), meta.Element("objectType").Value),
                                          float.Parse(meta.Element("objctSpeed").Value),                          
                                          int.Parse(meta.Element("objectPl").Value),
                                          meta.Element("objectCannonA").Value,
                                          meta.Element("objectCannonB").Value,
                                          int.Parse(meta.Element("Crew").Value),
                                          int.Parse(meta.Element("A").Value),
                                          int.Parse(meta.Element("BronART").Value),
                                          int.Parse(meta.Element("BronKorpus").Value),
                                          int.Parse(meta.Element("BronMKO").Value)
                                          )
                                 ).ToList<Model.BaseShip>()
                     }
                     ).ToList<Model.BasePort>();

    В поле Ships формируется список содержащий всегда одну запись. Почему у меня запрос не проходит по всем элементам списка?

    9 января 2013 г. 8:36

Ответы

  • Привет

    Попробуйте отдельно проверить, что при выборе ноды lastXML2.Descendants("Player") выбирается имеено нужный список элементов.

    Также проверьте значение ключей для сравнения ID_Ship и ID - что они соответсвуют друг другу, имеют одинаковый тип и .net их верно сравнивает.


    Для связи [mail]

    • Помечено в качестве ответа Abolmasov Dmitry 16 января 2013 г. 8:57
    10 января 2013 г. 6:41

Все ответы

  • Привет

    Попробуйте отдельно проверить, что при выборе ноды lastXML2.Descendants("Player") выбирается имеено нужный список элементов.

    Также проверьте значение ключей для сравнения ID_Ship и ID - что они соответсвуют друг другу, имеют одинаковый тип и .net их верно сравнивает.


    Для связи [mail]

    • Помечено в качестве ответа Abolmasov Dmitry 16 января 2013 г. 8:57
    10 января 2013 г. 6:41
  • Привет. Пожалуйста, не бросайте топик без ответа или комментариев. Спасибо.

    Для связи [mail]

    14 января 2013 г. 12:14