Extensions.Ancestors Methode

Definitie

Retourneert een verzameling elementen die de bovenliggende elementen van elk knooppunt in de bronverzameling bevat.

Overloads

Name Description
Ancestors<T>(IEnumerable<T>)

Retourneert een verzameling elementen die de bovenliggende elementen van elk knooppunt in de bronverzameling bevat.

Ancestors<T>(IEnumerable<T>, XName)

Retourneert een gefilterde verzameling elementen die de bovenliggende elementen van elk knooppunt in de bronverzameling bevat. Alleen elementen die een overeenkomst XName hebben, worden opgenomen in de verzameling.

Opmerkingen

Als meerdere knooppunten in de bronverzameling dezelfde voorouder hebben, wordt de bovenliggende bovenliggende waarde meerdere keren opgenomen in de resultaatverzameling. Gebruik de Distinct methode om dit te voorkomen.

Deze methode maakt gebruik van de uitgestelde uitvoering.

Ancestors<T>(IEnumerable<T>)

Bron:
Extensions.cs
Bron:
Extensions.cs
Bron:
Extensions.cs
Bron:
Extensions.cs
Bron:
Extensions.cs

Retourneert een verzameling elementen die de bovenliggende elementen van elk knooppunt in de bronverzameling bevat.

public:
generic <typename T>
 where T : System::Xml::Linq::XNode[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<System::Xml::Linq::XElement ^> ^ Ancestors(System::Collections::Generic::IEnumerable<T> ^ source);
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> Ancestors<T>(this System.Collections.Generic.IEnumerable<T> source) where T : System.Xml.Linq.XNode;
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> Ancestors<T>(this System.Collections.Generic.IEnumerable<T?> source) where T : System.Xml.Linq.XNode;
static member Ancestors : seq<'T (requires 'T :> System.Xml.Linq.XNode)> -> seq<System.Xml.Linq.XElement> (requires 'T :> System.Xml.Linq.XNode)
<Extension()>
Public Function Ancestors(Of T As XNode) (source As IEnumerable(Of T)) As IEnumerable(Of XElement)

Type parameters

T

Het type van de objecten in source, beperkt tot XNode.

Parameters

source
IEnumerable<T>

Een IEnumerable<T> van XNode die de bronverzameling bevat.

Retouren

Een IEnumerable<T> van XElement die de voorouders van elk knooppunt in de bronverzameling bevat.

Voorbeelden

In het volgende voorbeeld wordt een verzameling van de grote kleinkinderenelementen opgehaald. Vervolgens wordt deze asmethode gebruikt om alle voorouders van alle elementen in de verzameling op te halen.

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.Ancestors().Distinct()
    select el;

Console.WriteLine("");
Console.WriteLine("Ancestors");
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.Ancestors.Distinct _
                   Select el

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

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

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

Great Grand Children Elements
----
GreatGrandChild1
GreatGrandChild2

Ancestors
----
GrandChild1
Child1
Root
GrandChild2
Child2

Hier volgt hetzelfde voorbeeld, maar in dit geval bevindt de XML zich in een naamruimte. Zie Werken met XML-naamruimten voor meer informatie.

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.Ancestors().Distinct()
    select el;

Console.WriteLine("");
Console.WriteLine("Ancestors");
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.Ancestors.Distinct _
                           Select el

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

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

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

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

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

Opmerkingen

Als meerdere knooppunten in de bronverzameling dezelfde voorouder hebben, wordt de bovenliggende bovenliggende waarde meerdere keren opgenomen in de resultaatverzameling. Gebruik de Distinct methode om dit te voorkomen.

Deze methode maakt gebruik van de uitgestelde uitvoering.

Zie ook

Van toepassing op

Ancestors<T>(IEnumerable<T>, XName)

Bron:
Extensions.cs
Bron:
Extensions.cs
Bron:
Extensions.cs
Bron:
Extensions.cs
Bron:
Extensions.cs

Retourneert een gefilterde verzameling elementen die de bovenliggende elementen van elk knooppunt in de bronverzameling bevat. Alleen elementen die een overeenkomst XName hebben, worden opgenomen in de verzameling.

public:
generic <typename T>
 where T : System::Xml::Linq::XNode[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<System::Xml::Linq::XElement ^> ^ Ancestors(System::Collections::Generic::IEnumerable<T> ^ source, System::Xml::Linq::XName ^ name);
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> Ancestors<T>(this System.Collections.Generic.IEnumerable<T> source, System.Xml.Linq.XName name) where T : System.Xml.Linq.XNode;
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> Ancestors<T>(this System.Collections.Generic.IEnumerable<T?> source, System.Xml.Linq.XName? name) where T : System.Xml.Linq.XNode;
static member Ancestors : seq<'T (requires 'T :> System.Xml.Linq.XNode)> * System.Xml.Linq.XName -> seq<System.Xml.Linq.XElement> (requires 'T :> System.Xml.Linq.XNode)
<Extension()>
Public Function Ancestors(Of T As XNode) (source As IEnumerable(Of T), name As XName) As IEnumerable(Of XElement)

Type parameters

T

Het type van de objecten in source, beperkt tot XNode.

Parameters

source
IEnumerable<T>

Een IEnumerable<T> van XNode die de bronverzameling bevat.

name
XName

De XName te vergelijken.

Retouren

Een IEnumerable<T> van XElement die de voorouders van elk knooppunt in de bronverzameling bevat. Alleen elementen die een overeenkomst XName hebben, worden opgenomen in de verzameling.

Voorbeelden

In het volgende voorbeeld wordt een verzameling van de grote kleinkinderenelementen opgehaald. Vervolgens wordt deze asmethode gebruikt om alle bovenliggende elementen van alle elementen in de verzameling op te halen die overeenkomen met een opgegeven 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.Ancestors("Child1")
    select el;

Console.WriteLine("");
Console.WriteLine("Ancestors");
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.Ancestors("Child1") _
                   Select el

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

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

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

Great Grand Children Elements
----
GreatGrandChild1
GreatGrandChild2

Ancestors
----
Child1

Hier volgt hetzelfde voorbeeld, maar in dit geval bevindt de XML zich in een naamruimte. Zie Werken met XML-naamruimten voor meer informatie.

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.Ancestors(aw + "Child1")
    select el;

Console.WriteLine("");
Console.WriteLine("Ancestors");
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.Ancestors(GetXmlNamespace() + "Child1") _
                           Select el

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

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

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

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

Ancestors
----
{http://www.adventure-works.com}Child1

Opmerkingen

Als meerdere knooppunten in de bronverzameling dezelfde voorouder hebben met een overeenkomende XNamewaarde, wordt de bovenliggende knooppunten meerdere keren opgenomen in de resultaatverzameling.

Deze methode maakt gebruik van de uitgestelde uitvoering.

Zie ook

Van toepassing op