Lire en anglais

Partager via


Extensions.AncestorsAndSelf Méthode

Définition

Retourne une collection d'éléments qui contient tous les éléments de la collection source et leurs ancêtres.

Surcharges

AncestorsAndSelf(IEnumerable<XElement>)

Retourne une collection d'éléments qui contient tous les éléments de la collection source et leurs ancêtres.

AncestorsAndSelf(IEnumerable<XElement>, XName)

Retourne une collection d'éléments filtrée qui contient tous les éléments de la collection source et leurs ancêtres. Seuls les éléments avec un XName correspondant sont inclus dans la collection.

Remarques

Si plusieurs nœuds de la collection source ont le même ancêtre, l’ancêtre sera inclus plusieurs fois dans la collection de résultats. Pour éviter cela, utilisez la Distinct méthode .

Cette méthode utilise l'exécution différée.

AncestorsAndSelf(IEnumerable<XElement>)

Source:
Extensions.cs
Source:
Extensions.cs
Source:
Extensions.cs

Retourne une collection d'éléments qui contient tous les éléments de la collection source et leurs ancêtres.

C#
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> AncestorsAndSelf (this System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> source);
C#
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> AncestorsAndSelf (this System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement?> source);

Paramètres

source
IEnumerable<XElement>

IEnumerable<T> de XElement qui contient la collection source.

Retours

IEnumerable<T> de XElement qui contient tous les éléments de la collection source et leurs ancêtres.

Exemples

L’exemple suivant récupère une collection d’éléments arrière-petits-enfants. Il utilise ensuite cette méthode d’axe pour récupérer tous les ancêtres et l’auto de tous les éléments de la collection.

C#
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);  

Cet exemple produit la sortie suivante :

Great Grand Children Elements  
----  
GreatGrandChild1  
GreatGrandChild2  

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

Voici le même exemple, mais dans ce cas, le code XML se trouve dans un espace de noms. Pour plus d’informations, consultez Utiliser des espaces de noms XML.

C#
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);  

Cet exemple produit la sortie suivante :

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  

Remarques

Si plusieurs nœuds de la collection source ont le même ancêtre, l’ancêtre sera inclus plusieurs fois dans la collection de résultats. Pour éviter cela, utilisez la Distinct méthode .

Cette méthode utilise l'exécution différée.

Voir aussi

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

AncestorsAndSelf(IEnumerable<XElement>, XName)

Source:
Extensions.cs
Source:
Extensions.cs
Source:
Extensions.cs

Retourne une collection d'éléments filtrée qui contient tous les éléments de la collection source et leurs ancêtres. Seuls les éléments avec un XName correspondant sont inclus dans la collection.

C#
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);
C#
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);

Paramètres

source
IEnumerable<XElement>

IEnumerable<T> de XElement qui contient la collection source.

name
XName

XName à mettre en correspondance.

Retours

IEnumerable<T> de XElement qui contient tous les éléments de la collection source et leurs ancêtres. Seuls les éléments avec un XName correspondant sont inclus dans la collection.

Exemples

L’exemple suivant récupère une collection d’éléments arrière-petits-enfants. Il utilise ensuite cette méthode d’axe pour récupérer tous les soi-mêmes et les ancêtres de tous les éléments de la collection qui correspondent à un spécifié XName.

C#
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);  

Cet exemple produit la sortie suivante :

Great Grand Children Elements  
----  
GreatGrandChild1  
GreatGrandChild2  

Ancestors and Self  
----  
GreatGrandChild1  

Voici le même exemple, mais dans ce cas, le code XML se trouve dans un espace de noms. Pour plus d’informations, consultez Utiliser des espaces de noms XML.

C#
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);  

Cet exemple produit la sortie suivante :

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  

Remarques

Si plusieurs nœuds de la collection source ont le même ancêtre avec un correspondant XName, l’ancêtre sera inclus plusieurs fois dans la collection de résultats.

Cette méthode utilise l'exécution différée.

Voir aussi

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0