Extensions.AncestorsAndSelf Methode

Definitie

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

Overloads

Name Description
AncestorsAndSelf(IEnumerable<XElement>)

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

AncestorsAndSelf(IEnumerable<XElement>, XName)

Retourneert een gefilterde verzameling elementen die elk element in de bronverzameling bevat en de bovenliggende elementen van elk element in de bronverzameling. 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.

AncestorsAndSelf(IEnumerable<XElement>)

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

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

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

Parameters

source
IEnumerable<XElement>

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

Retouren

Een IEnumerable<T> daarvan XElement bevat elk element in de bronverzameling en de voorouders van elk element in de bronverzameling.

Voorbeelden

In het volgende voorbeeld wordt een verzameling van de grote kleinkinderenelementen opgehaald. Vervolgens wordt deze asmethode gebruikt om alle voorouders en het zelf 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.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

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

Great Grand Children Elements
----
GreatGrandChild1
GreatGrandChild2

Ancestors and Self
----
GreatGrandChild1
GrandChild1
Child1
Root
GreatGrandChild2
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.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

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 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

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

AncestorsAndSelf(IEnumerable<XElement>, XName)

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

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

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

Parameters

source
IEnumerable<XElement>

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

name
XName

De XName te vergelijken.

Retouren

Een IEnumerable<T> daarvan XElement bevat elk element in de bronverzameling en de voorouders van elk element in de bronverzameling. 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 zelf- en 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.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

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

Great Grand Children Elements
----
GreatGrandChild1
GreatGrandChild2

Ancestors and Self
----
GreatGrandChild1

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.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

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 and Self
----
{http://www.adventure-works.com}GreatGrandChild1

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