Extensions.Ancestors Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vrátí kolekci prvků, které obsahují předky každého uzlu ve zdrojové kolekci.
Přetížení
Ancestors<T>(IEnumerable<T>) |
Vrátí kolekci prvků, které obsahují předky každého uzlu ve zdrojové kolekci. |
Ancestors<T>(IEnumerable<T>, XName) |
Vrátí filtrovanou kolekci prvků, která obsahuje nadřazené prvky každého uzlu ve zdrojové kolekci. V kolekci jsou zahrnuty pouze prvky, které mají shodu XName . |
Poznámky
Pokud má více uzlů ve zdrojové kolekci stejný nadřazený objekt, bude nadřazený objekt ve výsledné kolekci zahrnut vícekrát. Chcete-li tomu zabránit, použijte metodu Distinct .
Tato metoda používá odložené provádění.
Ancestors<T>(IEnumerable<T>)
Vrátí kolekci prvků, které obsahují předky každého uzlu ve zdrojové kolekci.
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)
Parametry typu
- T
Typ objektů v source
, omezené na XNode.
Parametry
- source
- IEnumerable<T>
Z IEnumerable<T> toho XNode je zdrojová kolekce.
Návraty
XElement HodnotaIEnumerable<T>, která obsahuje předky každého uzlu ve zdrojové kolekci.
Příklady
Následující příklad načte kolekci velkých prvků vnuků. Tato metoda osy pak použije k načtení všech předků všech prvků v kolekci.
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
Tento příklad vytvoří následující výstup:
Great Grand Children Elements
----
GreatGrandChild1
GreatGrandChild2
Ancestors
----
GrandChild1
Child1
Root
GrandChild2
Child2
Následující příklad je stejný, ale v tomto případě je XML v oboru názvů. Další informace najdete v tématu Práce s obory názvů XML.
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
Tento příklad vytvoří následující výstup:
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
Poznámky
Pokud má více uzlů ve zdrojové kolekci stejný nadřazený objekt, bude nadřazený objekt ve výsledné kolekci zahrnut vícekrát. Chcete-li tomu zabránit, použijte metodu Distinct .
Tato metoda používá odložené provádění.
Viz také
- Ancestors()
- AncestorsAndSelf()
- AncestorsAndSelf
- Descendants
- Nodes<T>(IEnumerable<T>)
- Přehled LINQ to XML
Platí pro
Ancestors<T>(IEnumerable<T>, XName)
Vrátí filtrovanou kolekci prvků, která obsahuje nadřazené prvky každého uzlu ve zdrojové kolekci. V kolekci jsou zahrnuty pouze prvky, které mají shodu XName .
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)
Parametry typu
- T
Typ objektů v source
, omezené na XNode.
Parametry
- source
- IEnumerable<T>
Z IEnumerable<T> toho XNode je zdrojová kolekce.
Návraty
XElement HodnotaIEnumerable<T>, která obsahuje předky každého uzlu ve zdrojové kolekci. V kolekci jsou zahrnuty pouze prvky, které mají shodu XName .
Příklady
Následující příklad načte kolekci velkých prvků vnuků. Tato metoda osy pak použije k načtení všech předků všech prvků v kolekci, které odpovídají zadanému 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
Tento příklad vytvoří následující výstup:
Great Grand Children Elements
----
GreatGrandChild1
GreatGrandChild2
Ancestors
----
Child1
Následující příklad je stejný, ale v tomto případě je XML v oboru názvů. Další informace najdete v tématu Práce s obory názvů XML.
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
Tento příklad vytvoří následující výstup:
Great Grand Children Elements
----
{http://www.adventure-works.com}GreatGrandChild1
{http://www.adventure-works.com}GreatGrandChild2
Ancestors
----
{http://www.adventure-works.com}Child1
Poznámky
Pokud má více uzlů ve zdrojové kolekci stejný nadřazený shodný XNamepředek, bude nadřazený objekt ve výsledné kolekci zahrnut vícekrát.
Tato metoda používá odložené provádění.
Viz také
- Ancestors()
- AncestorsAndSelf()
- AncestorsAndSelf
- Descendants
- Nodes<T>(IEnumerable<T>)
- Přehled LINQ to XML