我之前在一个关于如何将Linq用于XML的问题中得到了帮助,我几乎让它工作了,但我仍然坚持让嵌套正常工作。请记住,这是我第一次使用LINQ,所以我是一个完整的新手。我有一个xml文件,它作为流进入Web应用程序。 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”标签中的内容。抱歉混淆。
答案 0 :(得分:0)
我认为您可以通过第一个内部的另一个linq查询来解决此问题。
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 = (from x in
Person.Descendants("StuffToGetChild1") select new
{
...
})
};