Extensions.Ancestors Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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
- Ancestors()
- AncestorsAndSelf()
- AncestorsAndSelf
- Descendants
- Nodes<T>(IEnumerable<T>)
- Overzicht van LINQ naar XML
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.
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
- Ancestors()
- AncestorsAndSelf()
- AncestorsAndSelf
- Descendants
- Nodes<T>(IEnumerable<T>)
- Overzicht van LINQ naar XML