Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Extensions.AncestorsAndSelf (IEnumerable<XElement>, XName)

 

Data di pubblicazione: ottobre 2016

Restituisce una raccolta filtrata di elementi che contiene ogni elemento nella raccolta di origine e i relativi predecessori di ogni elemento nella raccolta di origine. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.

Spazio dei nomi:   System.Xml.Linq
Assembly:  System.Xml.Linq (in System.Xml.Linq.dll)

public static IEnumerable<XElement> AncestorsAndSelf(
	this IEnumerable<XElement> source,
	XName name
)

Parametri

source
Type: System.Collections.Generic.IEnumerable<XElement>

Un IEnumerable<T> di XElement che contiene la raccolta di origine.

name
Type: System.Xml.Linq.XName

Oggetto XName di cui trovare la corrispondenza.

Valore restituito

Type: System.Collections.Generic.IEnumerable<XElement>

Un IEnumerable<T> di XElement che contiene ogni elemento nella raccolta di origine e i relativi predecessori di ogni elemento nella raccolta di origine. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.

Se più nodi nella raccolta di origine hanno lo stesso predecessore con una corrispondenza XName, il predecessore verrà incluso più volte nella raccolta di risultati.

Questo metodo usa l'esecuzione posticipata.

Nell'esempio seguente recupera una raccolta di grandi elementi nipoti. Viene quindi utilizzato il metodo dell'asse per recuperare tutti i predecessori di tutti gli elementi nella raccolta che corrispondano a un specificato 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);

Questo esempio produce il seguente output:

Great Grand Children Elements
----
GreatGrandChild1
GreatGrandChild2

Ancestors and Self
----
GreatGrandChild1

Di seguito è riportato l'esempio precedente, ma in questo caso il XML si trova in uno spazio dei nomi. Per altre informazioni, vedere Utilizzo degli spazi dei nomi 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);

Questo esempio produce il seguente output:

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

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 3.5
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: