我正在尝试学习LINQ to XML。我无法正确编写查询。我应该写什么来检索索引MCCO的代码列表?
<Indexes>
<Index Name="ARTP">
<Codes>
<Code>aaa</Code>
<Code>bbb</Code>
</Codes>
</Index>
<Index Name="MCCO">
<Codes>
<Code>ccc</Code>
<Code>ddd</Code>
</Codes>
</Index>
<Index Name="AWAY">
<Value>eee</Value>
</Index>
</Indexes>
我已经写了这个,但我觉得有一种方法可以改善查询。我假设我的节点中有代码(而不是值)。
private List<string> GetCodes(string name)
{
var indexes = from index in indexXmlDocument.Descendants("Index")
where index.Attribute("Name").Value == name
select new
{
Codes = index.Element("Codes").Elements("Code")
};
List<string> codes = new List<string>();
foreach (var code in indexes.Single().Codes)
{
codes.Add(code.Value);
}
return codes;
}
答案 0 :(得分:5)
private IEnumerable<string> GetCodes(string name)
{
return indexXmlDocument.Descendants("Index")
.Where(e => e.Attribute("Name").Value == name)
.Descendants("Code")
.Select(e => e.Value);
}