C# LINQ到XML复杂查询过滤
我有这个基于微软文档的代码 输出是C# LINQ到XML复杂查询过滤,c#,linq-to-xml,C#,Linq To Xml,我有这个基于微软文档的代码 输出是 <product name="p1"> <market name="m1"> <areacode>12345</areacode> <areacode>12346</areacode> </market> <market name="m2"> <areacode>12345</areacode> &
<product name="p1">
<market name="m1">
<areacode>12345</areacode>
<areacode>12346</areacode>
</market>
<market name="m2">
<areacode>12345</areacode>
<areacode>13346</areacode>
</market>
<market name="m3">
<areacode>12346</areacode>
<areacode>13346</areacode>
</market>
</product>
如何从输出中排除没有指定区号的市场?如果产品名称、市场名称和区号符合条件,则其余代码都需要 没有简单的方法可以创建一个新的树来满足您的需要,因为您无法直接筛选子级。但是,您可以修改树:
prods.Descendants("market").Where(m => m.Descendants("areacode").All(a => a.Value != "13346")).Remove();
prods.Descendants("product").Where(p => !p.Descendants("market").Any()).Remove();
谢谢这与我在处理xml的for循环中已经拥有的内容类似。我在这里的目的是学习和使用LINQ to XML。@workvact一般来说,LINQ用于查询以检索对象子集,而不是以某种方式修改对象,因此它不完全适合您所做的工作。
prods.Descendants("market").Where(m => m.Descendants("areacode").All(a => a.Value != "13346")).Remove();
prods.Descendants("product").Where(p => !p.Descendants("market").Any()).Remove();