Мне помогли в предыдущем вопросе о том, как использовать Linq для XML, и у меня почти все работает, но я застрял в том, как правильно работать вложения. Пожалуйста, имейте в виду, что я впервые использую LINQ, поэтому я новичок в этом. У меня есть XML-файл, который входит в веб-приложение в виде потока. XML довольно прост, в основном следующий формат:
<root>
<people>
<person>
<StuffToGet1>
<StuffToGet2>
...
<StuffToGetPARENT>
<useless1>
<useless2>
...
<StuffToGetChild1>
<StuffToGetChild2>
</StuffToGetPARENT>
</person>
</people>
</root>
Очевидно, у меня нет проблем с получением вещей, которые находятся на верхнем уровне. В настоящее время мой Linq тянет ВСЕ. Я хочу отфильтровать этот выбор в подзапросе, чтобы игнорировать все, что нет в тегах StuffToGetChild. Все теги будут называться одинаково (НЕ Brand1, Brand2 и т. Д.). Вот то, что я имею до сих пор ... пожалуйста, помогите !!
XDocument xdoc = XDocument.Load(XmlReader.Create(responseStream));
var People = from Person in xdoc.Descendants("Person")
where Person.Element("Role").Value != "Admin"
orderby Specialist.Element("Role").Value
select new
{
StuffToGet1 = Person.Element("StuffToGet1").Value,
StuffToGet2 = Person.Element("StuffToGet2").Value,
Brand = Person.Element("StuffToGetPARENT").Value
};
gvTest.DataSource = People;
gvTest.DataBind();
РЕДАКТИРОВАТЬ: Я только что понял, что я сказал, что может быть немного запутанным. «Бренд» - это то, что находится в тегах «StuffToGetChild». Извините за путаницу.