Extensions.AncestorsAndSelf Extensions.AncestorsAndSelf Extensions.AncestorsAndSelf Extensions.AncestorsAndSelf Method

Definición

Devuelve una colección de elementos que contiene todos los elementos y sus antecesores de la colección de origen.Returns a collection of elements that contains every element in the source collection, and the ancestors of every element in the source collection.

Sobrecargas

AncestorsAndSelf(IEnumerable<XElement>) AncestorsAndSelf(IEnumerable<XElement>) AncestorsAndSelf(IEnumerable<XElement>) AncestorsAndSelf(IEnumerable<XElement>)

Devuelve una colección de elementos que contiene todos los elementos y sus antecesores de la colección de origen.Returns a collection of elements that contains every element in the source collection, and the ancestors of every element in the source collection.

AncestorsAndSelf(IEnumerable<XElement>, XName) AncestorsAndSelf(IEnumerable<XElement>, XName) AncestorsAndSelf(IEnumerable<XElement>, XName) AncestorsAndSelf(IEnumerable<XElement>, XName)

Devuelve una colección de elementos filtrada que contiene todos los elementos y sus antecesores de la colección de origen.Returns a filtered collection of elements that contains every element in the source collection, and the ancestors of every element in the source collection. En la colección sólo se incluyen los elementos que tienen un objeto XName coincidente.Only elements that have a matching XName are included in the collection.

Comentarios

Si varios nodos de la colección de origen tienen el mismo antecesor, el antecesor se incluirá varias veces en la colección de resultados.If multiple nodes in the source collection have the same ancestor, the ancestor will be included multiple times in the result collection. Para evitar esto, use el Distinct método.To avoid this, use the Distinct method.

Este método usa la ejecución diferida.This method uses deferred execution.

AncestorsAndSelf(IEnumerable<XElement>) AncestorsAndSelf(IEnumerable<XElement>) AncestorsAndSelf(IEnumerable<XElement>) AncestorsAndSelf(IEnumerable<XElement>)

Devuelve una colección de elementos que contiene todos los elementos y sus antecesores de la colección de origen.Returns a collection of elements that contains every element in the source collection, and the ancestors of every element in the source collection.

public:
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<System::Xml::Linq::XElement ^> ^ AncestorsAndSelf(System::Collections::Generic::IEnumerable<System::Xml::Linq::XElement ^> ^ source);
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> AncestorsAndSelf (this System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> source);
static member AncestorsAndSelf : seq<System.Xml.Linq.XElement> -> seq<System.Xml.Linq.XElement>
<Extension()>
Public Function AncestorsAndSelf (source As IEnumerable(Of XElement)) As IEnumerable(Of XElement)

Parámetros

source
IEnumerable<XElement>

Interfaz IEnumerable<T> de XElement que contiene la colección de origen.An IEnumerable<T> of XElement that contains the source collection.

Devoluciones

Interfaz IEnumerable<T> de XElement que contiene todos los elementos y sus antecesores de la colección de origen.An IEnumerable<T> of XElement that contains every element in the source collection, and the ancestors of every element in the source collection.

Ejemplos

En el ejemplo siguiente se recupera una colección de los excelentes elementos descendientes.The following example retrieves a collection of the great grandchildren elements. A continuación, usa este método de eje para recuperar todos los antecesores y todos los elementos de la colección.It then uses this axis method to retrieve all ancestors and self of all elements in the collection.

XElement xmlTree = new XElement("Root",  
    new XElement("Child1",  
        new XElement("GrandChild1",  
            new XElement("GreatGrandChild1", "content")  
        )  
    ),  
    new XElement("Child2",  
        new XElement("GrandChild2",  
            new XElement("GreatGrandChild2", "content")  
        )  
    )  
);  
IEnumerable<XElement> greatGrandChildren =  
    from el in xmlTree.Descendants()  
    where el.Name.LocalName.StartsWith("Great")  
    select el;  

Console.WriteLine("Great Grand Children Elements");  
Console.WriteLine("----");  
foreach (XElement de in greatGrandChildren)  
    Console.WriteLine(de.Name);  

IEnumerable<XElement> allAncestors =  
    from el in greatGrandChildren.AncestorsAndSelf().Distinct()  
    select el;  

Console.WriteLine("");  
Console.WriteLine("Ancestors and Self");  
Console.WriteLine("----");  
foreach (XElement de in allAncestors)  
    Console.WriteLine(de.Name);  
Dim xmlTree As XElement = _   
    <Root>  
        <Child1>  
            <GrandChild1>  
                <GreatGrandChild1>content</GreatGrandChild1>  
            </GrandChild1>  
        </Child1>  
        <Child2>  
            <GrandChild2>  
                <GreatGrandChild2>content</GreatGrandChild2>  
            </GrandChild2>  
        </Child2>  
    </Root>  

Dim greatGrandChildren = From el In xmlTree.Descendants _  
                         Where el.Name.LocalName.StartsWith("Great") _  
                         Select el  

Console.WriteLine("Great Grand Children Elements")  
Console.WriteLine("----")  

For Each de As XElement In greatGrandChildren  
    Console.WriteLine(de.Name)  
Next  

Dim allAncestors = From el In greatGrandChildren.AncestorsAndSelf.Distinct _  
                   Select el  

Console.WriteLine("")  
Console.WriteLine("Ancestors and Self")  
Console.WriteLine("----")  

For Each de As XElement In allAncestors  
    Console.WriteLine(de.Name)  
Next  

Este ejemplo produce el siguiente resultado:This example produces the following output:

Great Grand Children Elements  
----  
GreatGrandChild1  
GreatGrandChild2  

Ancestors and Self  
----  
GreatGrandChild1  
GrandChild1  
Child1  
Root  
GreatGrandChild2  
GrandChild2  
Child2  

El siguiente ejemplo es el mismo, pero en este caso el XML está en un espacio de nombres.The following is the same example, but in this case the XML is in a namespace. Para obtener más información, vea trabajar con espacios de nombres XML.For more information, see Working with XML Namespaces.

XNamespace aw = "http://www.adventure-works.com";  
XElement xmlTree = new XElement(aw + "Root",  
    new XElement(aw + "Child1",  
        new XElement(aw + "GrandChild1",  
            new XElement(aw + "GreatGrandChild1", "content")  
        )  
    ),  
    new XElement(aw + "Child2",  
        new XElement(aw + "GrandChild2",  
            new XElement(aw + "GreatGrandChild2", "content")  
        )  
    )  
);  
IEnumerable<XElement> greatGrandChildren =  
    from el in xmlTree.Descendants()  
    where el.Name.LocalName.StartsWith("Great")  
    select el;  

Console.WriteLine("Great Grand Children Elements");  
Console.WriteLine("----");  
foreach (XElement de in greatGrandChildren)  
    Console.WriteLine(de.Name);  

IEnumerable<XElement> allAncestors =  
    from el in greatGrandChildren.AncestorsAndSelf().Distinct()  
    select el;  

Console.WriteLine("");  
Console.WriteLine("Ancestors and Self");  
Console.WriteLine("----");  
foreach (XElement de in allAncestors)  
    Console.WriteLine(de.Name);  
Imports <xmlns="http://www.adventure-works.com">  

Module Module1  
    Sub Main()  
        Dim xmlTree As XElement = _  
            <Root>  
                <Child1>  
                    <GrandChild1>  
                        <GreatGrandChild1>content</GreatGrandChild1>  
                    </GrandChild1>  
                </Child1>  
                <Child2>  
                    <GrandChild2>  
                        <GreatGrandChild2>content</GreatGrandChild2>  
                    </GrandChild2>  
                </Child2>  
            </Root>  

        Dim greatGrandChildren = From el In xmlTree.Descendants _  
                                 Where el.Name.LocalName.StartsWith("Great") _  
                                 Select el  

        Console.WriteLine("Great Grand Children Elements")  
        Console.WriteLine("----")  

        For Each de As XElement In greatGrandChildren  
            Console.WriteLine(de.Name)  
        Next  

        Dim allAncestors = From el In greatGrandChildren.AncestorsAndSelf.Distinct _  
                           Select el  

        Console.WriteLine("")  
        Console.WriteLine("Ancestors and Self")  
        Console.WriteLine("----")  

        For Each de As XElement In allAncestors  
            Console.WriteLine(de.Name)  
        Next  
    End Sub  
End Module  

Este ejemplo produce el siguiente resultado:This example produces the following output:

Great Grand Children Elements  
----  
{http://www.adventure-works.com}GreatGrandChild1  
{http://www.adventure-works.com}GreatGrandChild2  

Ancestors and Self  
----  
{http://www.adventure-works.com}GreatGrandChild1  
{http://www.adventure-works.com}GrandChild1  
{http://www.adventure-works.com}Child1  
{http://www.adventure-works.com}Root  
{http://www.adventure-works.com}GreatGrandChild2  
{http://www.adventure-works.com}GrandChild2  
{http://www.adventure-works.com}Child2  

Comentarios

Si varios nodos de la colección de origen tienen el mismo antecesor, el antecesor se incluirá varias veces en la colección de resultados.If multiple nodes in the source collection have the same ancestor, the ancestor will be included multiple times in the result collection. Para evitar esto, use el Distinct método.To avoid this, use the Distinct method.

Este método usa la ejecución diferida.This method uses deferred execution.

Consulte también:

AncestorsAndSelf(IEnumerable<XElement>, XName) AncestorsAndSelf(IEnumerable<XElement>, XName) AncestorsAndSelf(IEnumerable<XElement>, XName) AncestorsAndSelf(IEnumerable<XElement>, XName)

Devuelve una colección de elementos filtrada que contiene todos los elementos y sus antecesores de la colección de origen.Returns a filtered collection of elements that contains every element in the source collection, and the ancestors of every element in the source collection. En la colección sólo se incluyen los elementos que tienen un objeto XName coincidente.Only elements that have a matching XName are included in the collection.

public:
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<System::Xml::Linq::XElement ^> ^ AncestorsAndSelf(System::Collections::Generic::IEnumerable<System::Xml::Linq::XElement ^> ^ source, System::Xml::Linq::XName ^ name);
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> AncestorsAndSelf (this System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> source, System.Xml.Linq.XName name);
static member AncestorsAndSelf : seq<System.Xml.Linq.XElement> * System.Xml.Linq.XName -> seq<System.Xml.Linq.XElement>
<Extension()>
Public Function AncestorsAndSelf (source As IEnumerable(Of XElement), name As XName) As IEnumerable(Of XElement)

Parámetros

source
IEnumerable<XElement>

Interfaz IEnumerable<T> de XElement que contiene la colección de origen.An IEnumerable<T> of XElement that contains the source collection.

name
XName XName XName XName

XName que se va a comparar.The XName to match.

Devoluciones

Interfaz IEnumerable<T> de XElement que contiene todos los elementos y sus antecesores de la colección de origen.An IEnumerable<T> of XElement that contains every element in the source collection, and the ancestors of every element in the source collection. En la colección sólo se incluyen los elementos que tienen un objeto XName coincidente.Only elements that have a matching XName are included in the collection.

Ejemplos

En el ejemplo siguiente se recupera una colección de los excelentes elementos descendientes.The following example retrieves a collection of the great grandchildren elements. A continuación, usa este método de eje para recuperar todos los elementos propios y antecesores de todos los elementos de XNamela colección que coinciden con un especificado.It then uses this axis method to retrieve all self and ancestors of all elements in the collection that match a specified XName.

XElement xmlTree = new XElement("Root",  
    new XElement("Child1",  
        new XElement("GrandChild1",  
            new XElement("GreatGrandChild1", "content")  
        )  
    ),  
    new XElement("Child2",  
        new XElement("GrandChild2",  
            new XElement("GreatGrandChild2", "content")  
        )  
    )  
);  
IEnumerable<XElement> greatGrandChildren =  
    from el in xmlTree.Descendants()  
    where el.Name.LocalName.StartsWith("Great")  
    select el;  

Console.WriteLine("Great Grand Children Elements");  
Console.WriteLine("----");  
foreach (XElement de in greatGrandChildren)  
    Console.WriteLine(de.Name);  

IEnumerable<XElement> allAncestors =  
    from el in greatGrandChildren.AncestorsAndSelf("GreatGrandChild1")  
    select el;  

Console.WriteLine("");  
Console.WriteLine("Ancestors and Self");  
Console.WriteLine("----");  
foreach (XElement de in allAncestors)  
    Console.WriteLine(de.Name);  
Dim xmlTree As XElement = _  
    <Root>  
        <Child1>  
            <GrandChild1>  
                <GreatGrandChild1>content</GreatGrandChild1>  
            </GrandChild1>  
        </Child1>  
        <Child2>  
            <GrandChild2>  
                <GreatGrandChild2>content</GreatGrandChild2>  
            </GrandChild2>  
        </Child2>  
    </Root>  

Dim greatGrandChildren = From el In xmlTree.Descendants _  
                         Where el.Name.LocalName.StartsWith("Great") _  
                         Select el  

Console.WriteLine("Great Grand Children Elements")  
Console.WriteLine("----")  

For Each de As XElement In greatGrandChildren  
    Console.WriteLine(de.Name)  
Next  

Dim allAncestors = From el In greatGrandChildren.AncestorsAndSelf("GreatGrandChild1") _  
                   Select el  

Console.WriteLine("")  
Console.WriteLine("Ancestors and Self")  
Console.WriteLine("----")  

For Each de As XElement In allAncestors  
    Console.WriteLine(de.Name)  
Next  

Este ejemplo produce el siguiente resultado:This example produces the following output:

Great Grand Children Elements  
----  
GreatGrandChild1  
GreatGrandChild2  

Ancestors and Self  
----  
GreatGrandChild1  

El siguiente ejemplo es el mismo, pero en este caso el XML está en un espacio de nombres.The following is the same example, but in this case the XML is in a namespace. Para obtener más información, vea trabajar con espacios de nombres XML.For more information, see Working with XML Namespaces.

XNamespace aw = "http://www.adventure-works.com";  
XElement xmlTree = new XElement(aw + "Root",  
    new XElement(aw + "Child1",  
        new XElement(aw + "GrandChild1",  
            new XElement(aw + "GreatGrandChild1", "content")  
        )  
    ),  
    new XElement(aw + "Child2",  
        new XElement(aw + "GrandChild2",  
            new XElement(aw + "GreatGrandChild2", "content")  
        )  
    )  
);  
IEnumerable<XElement> greatGrandChildren =  
    from el in xmlTree.Descendants()  
    where el.Name.LocalName.StartsWith("Great")  
    select el;  

Console.WriteLine("Great Grand Children Elements");  
Console.WriteLine("----");  
foreach (XElement de in greatGrandChildren)  
    Console.WriteLine(de.Name);  

IEnumerable<XElement> allAncestors =  
    from el in greatGrandChildren.AncestorsAndSelf(aw + "GreatGrandChild1")  
    select el;  

Console.WriteLine("");  
Console.WriteLine("Ancestors and Self");  
Console.WriteLine("----");  
foreach (XElement de in allAncestors)  
    Console.WriteLine(de.Name);  
Imports <xmlns="http://www.adventure-works.com">  

Module Module1  
    Sub Main()  
        Dim xmlTree As XElement = _  
            <Root>  
                <Child1>  
                    <GrandChild1>  
                        <GreatGrandChild1>content</GreatGrandChild1>  
                    </GrandChild1>  
                </Child1>  
                <Child2>  
                    <GrandChild2>  
                        <GreatGrandChild2>content</GreatGrandChild2>  
                    </GrandChild2>  
                </Child2>  
            </Root>  

        Dim greatGrandChildren = From el In xmlTree.Descendants _  
                                 Where el.Name.LocalName.StartsWith("Great") _  
                                 Select el  

        Console.WriteLine("Great Grand Children Elements")  
        Console.WriteLine("----")  

        For Each de As XElement In greatGrandChildren  
            Console.WriteLine(de.Name)  
        Next  

        Dim allAncestors = From el In greatGrandChildren.AncestorsAndSelf(GetXmlNamespace() + "GreatGrandChild1") _  
                           Select el  

        Console.WriteLine("")  
        Console.WriteLine("Ancestors and Self")  
        Console.WriteLine("----")  

        For Each de As XElement In allAncestors  
            Console.WriteLine(de.Name)  
        Next  
    End Sub  
End Module  

Este ejemplo produce el siguiente resultado:This example produces the following output:

Great Grand Children Elements  
----  
{http://www.adventure-works.com}GreatGrandChild1  
{http://www.adventure-works.com}GreatGrandChild2  

Ancestors and Self  
----  
{http://www.adventure-works.com}GreatGrandChild1  

Comentarios

Si varios nodos de la colección de origen tienen el mismo antecesor con una XNamecoincidencia, el antecesor se incluirá varias veces en la colección de resultados.If multiple nodes in the source collection have the same ancestor with a matching XName, the ancestor will be included multiple times in the result collection.

Este método usa la ejecución diferida.This method uses deferred execution.

Consulte también:

Se aplica a