Extensions.AncestorsAndSelf Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zwraca kolekcję elementów, które zawierają każdy element w kolekcji źródłowej i elementy podrzędne każdego elementu w kolekcji źródłowej.
Przeciążenia
AncestorsAndSelf(IEnumerable<XElement>) |
Zwraca kolekcję elementów, które zawierają każdy element w kolekcji źródłowej i elementy podrzędne każdego elementu w kolekcji źródłowej. |
AncestorsAndSelf(IEnumerable<XElement>, XName) |
Zwraca odfiltrowaną kolekcję elementów, które zawierają każdy element w kolekcji źródłowej, oraz elementów podrzędnych każdego elementu w kolekcji źródłowej. W kolekcji znajdują się tylko elementy, które mają dopasowanie XName . |
Uwagi
Jeśli wiele węzłów w kolekcji źródłowej ma ten sam element nadrzędny, obiekt nadrzędny zostanie uwzględniony wiele razy w kolekcji wyników. Aby tego uniknąć, użyj Distinct metody .
Ta metoda używa odroczonego wykonania.
AncestorsAndSelf(IEnumerable<XElement>)
- Źródło:
- Extensions.cs
- Źródło:
- Extensions.cs
- Źródło:
- Extensions.cs
Zwraca kolekcję elementów, które zawierają każdy element w kolekcji źródłowej i elementy podrzędne każdego elementu w kolekcji źródłowej.
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)
Parametry
- source
- IEnumerable<XElement>
XElement Element IEnumerable<T> zawierający kolekcję źródłową.
Zwraca
XElement Element IEnumerable<T> zawierający każdy element w kolekcji źródłowej oraz elementy będące elementami źródłowymi w kolekcji źródłowej.
Przykłady
Poniższy przykład pobiera kolekcję elementów prawnuków. Następnie używa tej metody osi do pobierania wszystkich elementów przodków i siebie wszystkich elementów w kolekcji.
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
Ten przykład generuje następujące wyniki:
Great Grand Children Elements
----
GreatGrandChild1
GreatGrandChild2
Ancestors and Self
----
GreatGrandChild1
GrandChild1
Child1
Root
GreatGrandChild2
GrandChild2
Child2
Poniżej przedstawiono ten sam przykład, ale w tym przypadku kod XML znajduje się w przestrzeni nazw. Aby uzyskać więcej informacji, zobacz Praca z przestrzeniami nazw 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.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
Ten przykład generuje następujące wyniki:
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
Uwagi
Jeśli wiele węzłów w kolekcji źródłowej ma ten sam element nadrzędny, obiekt nadrzędny zostanie uwzględniony wiele razy w kolekcji wyników. Aby tego uniknąć, użyj Distinct metody .
Ta metoda używa odroczonego wykonania.
Zobacz też
- Ancestors()
- AncestorsAndSelf()
- Ancestors
- Descendants
- Nodes<T>(IEnumerable<T>)
- LINQ to XML — przegląd
Dotyczy
AncestorsAndSelf(IEnumerable<XElement>, XName)
- Źródło:
- Extensions.cs
- Źródło:
- Extensions.cs
- Źródło:
- Extensions.cs
Zwraca odfiltrowaną kolekcję elementów, które zawierają każdy element w kolekcji źródłowej, oraz elementów podrzędnych każdego elementu w kolekcji źródłowej. W kolekcji znajdują się tylko elementy, które mają dopasowanie XName .
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)
Parametry
- source
- IEnumerable<XElement>
XElement Element IEnumerable<T> zawierający kolekcję źródłową.
Zwraca
XElement Element IEnumerable<T> zawierający każdy element w kolekcji źródłowej oraz elementy będące elementami źródłowymi w kolekcji źródłowej. W kolekcji znajdują się tylko elementy, które mają dopasowanie XName .
Przykłady
Poniższy przykład pobiera kolekcję elementów prawnuków. Następnie używa tej metody osi do pobierania wszystkich elementów własnych i elementów w kolekcji, które pasują do określonego XNameelementu .
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
Ten przykład generuje następujące wyniki:
Great Grand Children Elements
----
GreatGrandChild1
GreatGrandChild2
Ancestors and Self
----
GreatGrandChild1
Poniżej przedstawiono ten sam przykład, ale w tym przypadku kod XML znajduje się w przestrzeni nazw. Aby uzyskać więcej informacji, zobacz Praca z przestrzeniami nazw 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.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
Ten przykład generuje następujące wyniki:
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
Uwagi
Jeśli wiele węzłów w kolekcji źródłowej ma ten sam element nadrzędny z pasującym XNameelementem , element nadrzędny zostanie uwzględniony wiele razy w kolekcji wyników.
Ta metoda używa odroczonego wykonania.
Zobacz też
- Ancestors()
- AncestorsAndSelf()
- Ancestors
- Descendants
- Nodes<T>(IEnumerable<T>)
- LINQ to XML — przegląd