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

 

Data di pubblicazione: novembre 2016

Restituisce una raccolta filtrata di elementi che contiene gli elementi discendenti di ciascun elemento e il documento 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> Descendants<T>(
	this IEnumerable<T> source,
	XName name
)
where T : XContainer

Parametri

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

Un IEnumerable<T> di XContainer 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 gli elementi discendenti di ciascun elemento e il documento 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 XContainer.

Gli utenti di Visual Basic possono utilizzare il Assi integrati nel linguaggio in Visual Basic (LINQ to XML) invece di utilizzare questo metodo dell'asse in modo esplicito.

Questo metodo utilizza l'esecuzione posticipata.

Nell'esempio seguente viene recuperato un insieme di due elementi e quindi recupera una raccolta di tutti i discendenti dei due elementi con il nome dell'elemento specificato.


                XElement xmlTree = XElement.Parse(
@"<Root>
    <Para>
        <t>This is some text </t>
        <b>
            <t>where</t>
        </b>
        <t> all of the text nodes must be concatenated. </t>
    </Para>
    <Para>
        <t>This is a second sentence.</t>
    </Para>
</Root>");

string str =
    (from el in xmlTree.Elements("Para").Descendants("t")
    select (string)el)
    .Aggregate(new StringBuilder(),
        (sb, i) => sb.Append(i),
        sb => sb.ToString());

Console.WriteLine(str);

Questo esempio produce il seguente output:

This is some text where all of the text nodes must be concatenated. This is a second sentence.

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 = XElement.Parse(
@"<Root xmlns='http://www.adventure-works.com'>
    <Para>
        <t>This is some text </t>
        <b>
            <t>where</t>
        </b>
        <t> all of the text nodes must be concatenated. </t>
    </Para>
    <Para>
        <t>This is a second sentence.</t>
    </Para>
</Root>");

string str =
    (from el in xmlTree.Elements(aw + "Para").Descendants(aw + "t")
     select (string)el)
    .Aggregate(new StringBuilder(),
        (sb, i) => sb.Append(i),
        sb => sb.ToString());

Console.WriteLine(str);

Questo esempio produce il seguente output:

This is some text where all of the text nodes must be concatenated. This is a second sentence.

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: