[英]Getting Values From XML With Linq Query
我有下面的XML文件。
<Root>
<r1>
<n1>Person1</n1>
<n2>Type1</n2>
</r1>
<r1>
<n1>Person1</n1>
<n2>Type2</n2>
</r1>
<r1>
<n1>Person2</n1>
<n2>Type2</n2>
</r1>
<r1>
<n1>Person2</n1>
<n2>Type3</n2>
</r1>
<r1>
<n1>Person2</n1>
<n2>Type4</n2>
</r1>
<r1>
<n1>Person2</n1>
<n2>Type4</n2>
</r1>
</Root>
我想要的是基于人员的类型。 例如,我尝试在下面的查询中查询person1的Type1和Type2值,但是它不起作用。
XDocument doc = XDocument.Parse(XML_Document);
XElement[] pages = doc
.Descendants("r1")
.OrderBy(x => x.FirstNode.Value=="person1")
.ToArray();
我应该使用哪个查询来获取它? 还是在asp.net C#中有更好的方式处理XML文档?
您可以使用Where()
按n1
个子元素值过滤r1
,然后使用Select()
返回相应的n2
元素值:
string[] types = doc.Descendants("r1")
.Where(x => (string)x.Element("n1") == "person1")
.Select(x => (string)x.Element("n2"))
.ToArray();
如果要显式删除重复的值,请在Select()
Distinct()
之后添加Distinct()
。
尝试使用如下所示的where语句,这将给您两个要素
XElement[] pages = doc.Descendants("r1")
.Where(x => x.Element("n1").Value == "Person1")
.ToArray();
尝试使用以下代码:
var pages = doc.
Descendants("r1").
Where(r1 => r1.Element("n1").Value == "person1").
Select(r1 => r1.Element("n2").Value).
ToArray();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.