Comment obtenir la position d'indice (dans l'ordre) d'un élément XML à l'aide de LINQ?

J'ai XML exactement comme ce format:

<?xml version="1.0" encoding="utf-8"?>
<book>
    <chapter>
        <verse>This is verse 1</verse>
        <verse>This is verse 2</verse>
        <verse>This is verse 3</verse>
        <verse>This is verse 4</verse>
    </chapter>
    <chapter>
        <verse>This is verse 1</verse>
        <verse>This is verse 2</verse>
    </chapter>
    <chapter>
        <verse>This is verse 1</verse>
    </chapter>
</book>

En C# à l'aide de Linq, j'ai besoin d'être en mesure d'obtenir l'élément XML d'un poste ou d'un indice, basé sur la valeur de la fonction d'état.getChapterNumber(). Par exemple, si la valeur de 4, j'ai besoin de saisir le chapitre 4 de l'élément dans le document XML.

XDocument book = XDocument.Load(string.Format("Translations/NWT/{0}.xml", state.BookName));
var verses = from chapter in book.Decendants()
             where state.getChapterNumber() == (WHAT DO I PUT HERE TO MATCH THE VALUE??)
             from verse in chapter.Descendants("p").Elements()
             select new
             {
                 VerseNumber = verse.Attribute("n").Value,
                 Text = verse.Value,
                 LastVerseInParagraph = verse.Parent.Elements().LastOrDefault().Value,
                 FirstVerseInParagraph = verse.Parent.Elements().FirstOrDefault().Value
             };

S'il vous plaît aider, ce qui est vraiment important et a été me retient pendant des jours. Tout ce que je veux faire est d'être en mesure d'obtenir les versets de tout le chapitre que j'avais à choisir dans le livre.

  • Pourquoi je ne peux pas dire where chapter.Index().Value == state.getChapterNumber()
InformationsquelleAutor Guy Micciche | 2011-11-08