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.Ancestors<T>(IEnumerable<T>, XName)

 

Data di pubblicazione: ottobre 2016

Restituisce una raccolta filtrata di elementi che contiene i predecessori di ciascun nodo 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> Ancestors<T>(
	this IEnumerable<T> source,
	XName name
)
where T : XNode

Parametri

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

Un IEnumerable<T> di XNode 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 i predecessori di ogni nodo nella raccolta di origine. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.

Parametri tipo

T

Il tipo degli oggetti in source, vincolato a XNode.

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 utilizza l'esecuzione posticipata.

Nell'esempio seguente recupera una raccolta di grandi elementi nipoti. Viene quindi utilizzato questo 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.Ancestors("Child1")
    select el;

Console.WriteLine("");
Console.WriteLine("Ancestors");
Console.WriteLine("----");
foreach (XElement de in allAncestors)
    Console.WriteLine(de.Name);

Questo esempio produce il seguente output:

Great Grand Children Elements
----
GreatGrandChild1
GreatGrandChild2

Ancestors
----
Child1

L'esempio seguente è il medesimo, ma in questo caso il codice XML è 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.Ancestors(aw + "Child1")
    select el;

Console.WriteLine("");
Console.WriteLine("Ancestors");
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
----
{http://www.adventure-works.com}Child1

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: