Extensions.Descendants(Of T) Method (IEnumerable(Of T), XName)

 

Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. Only elements that have a matching XName are included in the collection.

Namespace:   System.Xml.Linq
Assembly:  System.Xml.Linq (in System.Xml.Linq.dll)

<ExtensionAttribute>
Public Shared Function Descendants(Of T As XContainer) (
	source As IEnumerable(Of T),
	name As XName
) As IEnumerable(Of XElement)

Parameters

source
Type: System.Collections.Generic.IEnumerable(Of T)

An IEnumerable(Of T) of XContainer that contains the source collection.

name
Type: System.Xml.Linq.XName

The XName to match.

Return Value

Type: System.Collections.Generic.IEnumerable(Of XElement)

An IEnumerable(Of T) of XElement that contains the descendant elements of every element and document in the source collection. Only elements that have a matching XName are included in the collection.

Type Parameters

T

The type of the objects in source, constrained to XContainer.

Visual Basic users can use the Language-Integrated Axes in Visual Basic (LINQ to XML) instead of using this axis method explicitly.

This method uses deferred execution.

The following example retrieves a collection of two elements, and then retrieves a collection of all descendants of the two elements that have the specified element name.


                Dim xmlTree As XElement = _
    <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>

Dim str As String = _
    ( _
        From el In xmlTree.<Para>...<t> _
        Select CStr(el) _
    ) _
    .Aggregate(New StringBuilder(), _
               Function(ByVal sb, ByVal i) sb.Append(i), _
               Function(ByVal sb) sb.ToString())

Console.WriteLine(str)

This example produces the following output:

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

The following is the same example, but in this case the XML is in a namespace. For more information, see Working with XML Namespaces.


                Imports <xmlns="http://www.adventure-works.com">

Module Module1
    Sub Main()
        Dim xmlTree As XElement = _
            <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>

        Dim str As String = _
            ( _
                From el In xmlTree.<Para>...<t> _
                Select CStr(el) _
            ) _
            .Aggregate(New StringBuilder(), _
                       Function(sb, i) sb.Append(i), _
                       Function(sb) sb.ToString())

        Console.WriteLine(str)
    End Sub
End Module

This example produces the following output:

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

Universal Windows Platform
Available since 8
.NET Framework
Available since 3.5
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Return to top
Show: