我正在尝试从XmlDocument切换到Linq,并且正在努力获得我想要的东西。
我有类似的XML,
<root>
<Surfer Status='5'>
<Name>Billy</Name>
<County>Cornwall</County>
</Surfer>
<Surfer Status='5'>
<Name>Tim</Name>
<County>Cornwall</County>
</Surfer>
<Surfer Status='10'>
<Name>Ryan</Name>
<County>Devon</County>
</Surfer>
</root>
我可以算上这样的所有冲浪者。
XDocument X = XDocument.Load("Surfers.xml");
int Total = X.Descendants("Surfer").Count();
我希望像这样计算所有状态为5的冲浪者
int fives = X.Descendants["Surfer[@Status='5']").Count();
但它不起作用!
答案 0 :(得分:1)
使用Where
:
int fives = X.Descendants("Surfer").Where(s => (int)s.Attribute("Status") == 5).Count();
或者如果您真的想要使用XPath表达式,可以在添加using System.Xml.XPath
并使用XPathSelectElements
后执行此操作:
int fives = X.XPathSelectElements("Surfer[@Status='5']").Count();
答案 1 :(得分:1)
您可以使用带有谓词的Count
重载
int fives = X.Descendants("Surfer").Count(x => x.Attribute("Status")?.Value == "5");
x.Attribute("Status")
将从Status
元素检索Surfer
属性,?.
运算符会阻止NullReferenceException
如果任何Surfer
元素没有Status
angular.module('myApp', []).config(function($interpolateProvider){
$interpolateProvider.startSymbol('{*').endSymbol('*}');
});
属性。