Linq to Xml, возможно ли улучшить этот запрос? - PullRequest
2 голосов
/ 25 марта 2011

Я пытаюсь выучить 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;
    }

1 Ответ

5 голосов
/ 25 марта 2011
private IEnumerable<string> GetCodes(string name)
{
    return indexXmlDocument.Descendants("Index")
        .Where(e => e.Attribute("Name").Value == name)
        .Descendants("Code")
        .Select(e => e.Value);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...