Linq to XML: Diferencia entre Elements() y Descendants()

La diferencia es sencilla, mientra Descendants() cuenta todos los nodos (anidados incluidos), Elements() solo cuenta los del mismo nivel.

string xml = @"
                <Root>
                    <Item>
                        <id>1</id>
                    </Item>
                    <Item>
                        <id>2</id>
                    </Item>
                    <Item>
                        <id>3</id>
                        <Items>
                            <Item>
                                <id>5</id>
                            </Item>
                            <Item>
                                <id>6</id>
                            </Item>                            
                        </Items>
                    </Item>
                    <Item>
                        <id>4</id>
                    </Item>
                </Root>";
 
            XDocument doc1 = XDocument.Parse(xml);
 
            var q1 = from e in doc1.Root.Descendants("Item")
                     select e;
 
            var q2 = from e in doc1.Root.Elements("Item")
                     select e;
 
            int c1 = q1.Count(); //6
            int c2 = q2.Count(); //4

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *