Extensions.AncestorsAndSelf Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Returnerar en samling element som innehåller varje element i källsamlingen och överordnade element i källsamlingen.
Överlagringar
| Name | Description |
|---|---|
| AncestorsAndSelf(IEnumerable<XElement>) |
Returnerar en samling element som innehåller varje element i källsamlingen och överordnade element i källsamlingen. |
| AncestorsAndSelf(IEnumerable<XElement>, XName) |
Returnerar en filtrerad samling element som innehåller varje element i källsamlingen och överordnade element i källsamlingen. Endast element som har matchning XName ingår i samlingen. |
Kommentarer
Om flera noder i källsamlingen har samma överordnade, inkluderas den överordnade flera gånger i resultatsamlingen. Undvik detta genom att Distinct använda metoden .
Den här metoden använder uppskjuten körning.
AncestorsAndSelf(IEnumerable<XElement>)
- Källa:
- Extensions.cs
- Källa:
- Extensions.cs
- Källa:
- Extensions.cs
- Källa:
- Extensions.cs
- Källa:
- Extensions.cs
Returnerar en samling element som innehåller varje element i källsamlingen och överordnade element i källsamlingen.
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)
Parametrar
- source
- IEnumerable<XElement>
En IEnumerable<T> av XElement dem innehåller källsamlingen.
Returer
En IEnumerable<T> av XElement dessa innehåller varje element i källsamlingen och överordnade element för varje element i källsamlingen.
Exempel
I följande exempel hämtas en samling av barnbarnselementen. Den använder sedan den här axelmetoden för att hämta alla överordnade element och själv för alla element i samlingen.
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
Det här exemplet genererar följande utdata:
Great Grand Children Elements
----
GreatGrandChild1
GreatGrandChild2
Ancestors and Self
----
GreatGrandChild1
GrandChild1
Child1
Root
GreatGrandChild2
GrandChild2
Child2
Följande är samma exempel, men i det här fallet finns XML i ett namnområde. Mer information finns i Arbeta med XML-namnområden.
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
Det här exemplet genererar följande utdata:
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
Kommentarer
Om flera noder i källsamlingen har samma överordnade, inkluderas den överordnade flera gånger i resultatsamlingen. Undvik detta genom att Distinct använda metoden .
Den här metoden använder uppskjuten körning.
Se även
- AncestorsAndSelf()
- Descendants
- Nodes<T>(IEnumerable<T>)
- System.Xml.Linq.XNode.Ancestors
- System.Xml.Linq.Extensions.Ancestors
- Översikt över LINQ till XML
Gäller för
AncestorsAndSelf(IEnumerable<XElement>, XName)
- Källa:
- Extensions.cs
- Källa:
- Extensions.cs
- Källa:
- Extensions.cs
- Källa:
- Extensions.cs
- Källa:
- Extensions.cs
Returnerar en filtrerad samling element som innehåller varje element i källsamlingen och överordnade element i källsamlingen. Endast element som har matchning XName ingår i samlingen.
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)
Parametrar
- source
- IEnumerable<XElement>
En IEnumerable<T> av XElement dem innehåller källsamlingen.
Returer
En IEnumerable<T> av XElement dessa innehåller varje element i källsamlingen och överordnade element för varje element i källsamlingen. Endast element som har matchning XName ingår i samlingen.
Exempel
I följande exempel hämtas en samling av barnbarnselementen. Den använder sedan den här axelmetoden för att hämta alla själv- och överordnade element för alla element i samlingen som matchar en angiven 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
Det här exemplet genererar följande utdata:
Great Grand Children Elements
----
GreatGrandChild1
GreatGrandChild2
Ancestors and Self
----
GreatGrandChild1
Följande är samma exempel, men i det här fallet finns XML i ett namnområde. Mer information finns i Arbeta med XML-namnområden.
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
Det här exemplet genererar följande utdata:
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
Kommentarer
Om flera noder i källsamlingen har samma överordnade med en matchning XNameinkluderas överordnad flera gånger i resultatsamlingen.
Den här metoden använder uppskjuten körning.
Se även
- AncestorsAndSelf()
- Descendants
- Nodes<T>(IEnumerable<T>)
- System.Xml.Linq.XNode.Ancestors
- System.Xml.Linq.Extensions.Ancestors
- Översikt över LINQ till XML