Extensions.AncestorsAndSelf Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Devuelve una colección de elementos que contiene todos los elementos y sus antecesores de la colección de origen.
Sobrecargas
AncestorsAndSelf(IEnumerable<XElement>) |
Devuelve una colección de elementos que contiene todos los elementos y sus antecesores de la colección de origen. |
AncestorsAndSelf(IEnumerable<XElement>, XName) |
Devuelve una colección de elementos filtrada que contiene todos los elementos y sus antecesores de la colección de origen. En la colección sólo se incluyen los elementos que tienen un objeto XName coincidente. |
Comentarios
Si varios nodos de la colección de origen tienen el mismo antecesor, el antecesor se incluirá varias veces en la colección de resultados. Para evitar esto, use el Distinct método .
Este método usa la ejecución diferida.
AncestorsAndSelf(IEnumerable<XElement>)
- Source:
- Extensions.cs
- Source:
- Extensions.cs
- Source:
- Extensions.cs
Devuelve una colección de elementos que contiene todos los elementos y sus antecesores de la colección de origen.
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)
Parámetros
- source
- IEnumerable<XElement>
Interfaz IEnumerable<T> de XElement que contiene la colección de origen.
Devoluciones
Interfaz IEnumerable<T> de XElement que contiene todos los elementos y sus antecesores de la colección de origen.
Ejemplos
En el ejemplo siguiente se recupera una colección de los elementos de los nietos. A continuación, usa este método de eje para recuperar todos los antecesores y el propio de todos los elementos de la colección.
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
Este ejemplo produce el siguiente resultado:
Great Grand Children Elements
----
GreatGrandChild1
GreatGrandChild2
Ancestors and Self
----
GreatGrandChild1
GrandChild1
Child1
Root
GreatGrandChild2
GrandChild2
Child2
El siguiente es el mismo ejemplo, pero en este caso el XML está en un espacio de nombres. Para obtener más información, vea Trabajar con espacios de nombres 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
Este ejemplo produce el siguiente resultado:
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
Comentarios
Si varios nodos de la colección de origen tienen el mismo antecesor, el antecesor se incluirá varias veces en la colección de resultados. Para evitar esto, use el Distinct método .
Este método usa la ejecución diferida.
Consulte también
- Ancestors()
- AncestorsAndSelf()
- Ancestors
- Descendants
- Nodes<T>(IEnumerable<T>)
- Información general de LINQ to XML
Se aplica a
AncestorsAndSelf(IEnumerable<XElement>, XName)
- Source:
- Extensions.cs
- Source:
- Extensions.cs
- Source:
- Extensions.cs
Devuelve una colección de elementos filtrada que contiene todos los elementos y sus antecesores de la colección de origen. En la colección sólo se incluyen los elementos que tienen un objeto XName coincidente.
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)
Parámetros
- source
- IEnumerable<XElement>
Interfaz IEnumerable<T> de XElement que contiene la colección de origen.
Devoluciones
Interfaz IEnumerable<T> de XElement que contiene todos los elementos y sus antecesores de la colección de origen. En la colección sólo se incluyen los elementos que tienen un objeto XName coincidente.
Ejemplos
En el ejemplo siguiente se recupera una colección de los elementos de los nietos. A continuación, usa este método de eje para recuperar todos los antecesores y de todos los elementos de la colección que coinciden con un especificado 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
Este ejemplo produce el siguiente resultado:
Great Grand Children Elements
----
GreatGrandChild1
GreatGrandChild2
Ancestors and Self
----
GreatGrandChild1
El siguiente es el mismo ejemplo, pero en este caso el XML está en un espacio de nombres. Para obtener más información, vea Trabajar con espacios de nombres 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
Este ejemplo produce el siguiente resultado:
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
Comentarios
Si varios nodos de la colección de origen tienen el mismo antecesor con un elemento coincidente XName, el antecesor se incluirá varias veces en la colección de resultados.
Este método usa la ejecución diferida.
Consulte también
- Ancestors()
- AncestorsAndSelf()
- Ancestors
- Descendants
- Nodes<T>(IEnumerable<T>)
- Información general de LINQ to XML