Extensions.Descendants Extensions.Descendants Extensions.Descendants Extensions.Descendants Method

Определение

Возвращает коллекцию элементов, содержащую подчиненные элементы каждого элемента и документа в исходной коллекции.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

Перегрузки

Descendants<T>(IEnumerable<T>, XName) Descendants<T>(IEnumerable<T>, XName) Descendants<T>(IEnumerable<T>, XName) Descendants<T>(IEnumerable<T>, XName)

Возвращает отфильтрованную коллекцию элементов, содержащую подчиненные элементы каждого элемента и документа в исходной коллекции.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. В коллекцию включаются только элементы, соответствующие XName.Only elements that have a matching XName are included in the collection.

Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>)

Возвращает коллекцию элементов, содержащую подчиненные элементы каждого элемента и документа в исходной коллекции.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

Комментарии

Пользователи Visual Basic могут использовать интегрированный дочерней оси XML для получения элементов-потомков коллекции.Visual Basic users can use the integrated XML descendant axis to retrieve the descendant elements of a collection. Тем не менее встроенная ось получает только потомки с указанным именем.However, the integrated axis only retrieves descendants with a specified name. Если нужны пользователям Visual Basic для получения всех потомков, следует использовать этот метод оси явным образом.If Visual Basic users want to retrieve all descendants, then they must use this axis method explicitly.

Этот метод использует отложенное выполнение.This method uses deferred execution.

Descendants<T>(IEnumerable<T>, XName) Descendants<T>(IEnumerable<T>, XName) Descendants<T>(IEnumerable<T>, XName) Descendants<T>(IEnumerable<T>, XName)

Возвращает отфильтрованную коллекцию элементов, содержащую подчиненные элементы каждого элемента и документа в исходной коллекции.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. В коллекцию включаются только элементы, соответствующие XName.Only elements that have a matching XName are included in the collection.

public:
generic <typename T>
 where T : System::Xml::Linq::XContainer[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<System::Xml::Linq::XElement ^> ^ Descendants(System::Collections::Generic::IEnumerable<T> ^ source, System::Xml::Linq::XName ^ name);
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> Descendants<T> (this System.Collections.Generic.IEnumerable<T> source, System.Xml.Linq.XName name) where T : System.Xml.Linq.XContainer;
static member Descendants : seq<'T (requires 'T :> System.Xml.Linq.XContainer)> * System.Xml.Linq.XName -> seq<System.Xml.Linq.XElement> (requires 'T :> System.Xml.Linq.XContainer)
<Extension()>
Public Function Descendants(Of T As XContainer) (source As IEnumerable(Of T), name As XName) As IEnumerable(Of XElement)

Параметры типа

T

Тип объектов в source, ограниченный узлом XContainer.The type of the objects in source, constrained to XContainer.

Параметры

source
IEnumerable<T> IEnumerable<T> IEnumerable<T> IEnumerable<T>

Интерфейс IEnumerable<T> узла XContainer, содержащий исходную коллекцию.An IEnumerable<T> of XContainer that contains the source collection.

name
XName XName XName XName

XName для соответствия.The XName to match.

Возвраты

IEnumerable<T> для XElement, содержащий подчиненные элементы каждого элемента и документа в исходной коллекции.An IEnumerable<T> of XElement that contains the descendant elements of every element and document in the source collection. В коллекцию включаются только элементы, соответствующие XName.Only elements that have a matching XName are included in the collection.

Примеры

В следующем примере извлекается коллекция из двух элементов и затем возвращает коллекцию всех потомков двух элементов, которые содержат имя указанного элемента.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.

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);  
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.  

Ниже приведен тот же пример, но в этом случае XML находится в пространстве имен.The following is the same example, but in this case the XML is in a namespace. Дополнительные сведения см. в разделе работа с пространствами имен XML.For more information, see Working with XML Namespaces.

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);  
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.  

Комментарии

Пользователи Visual Basic могут использовать встроенных в язык оси в Visual Basic (LINQ to XML) вместо явным образом с помощью этого метода оси.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.

Дополнительно

Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>)

Возвращает коллекцию элементов, содержащую подчиненные элементы каждого элемента и документа в исходной коллекции.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

public:
generic <typename T>
 where T : System::Xml::Linq::XContainer[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<System::Xml::Linq::XElement ^> ^ Descendants(System::Collections::Generic::IEnumerable<T> ^ source);
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> Descendants<T> (this System.Collections.Generic.IEnumerable<T> source) where T : System.Xml.Linq.XContainer;
static member Descendants : seq<'T (requires 'T :> System.Xml.Linq.XContainer)> -> seq<System.Xml.Linq.XElement> (requires 'T :> System.Xml.Linq.XContainer)
<Extension()>
Public Function Descendants(Of T As XContainer) (source As IEnumerable(Of T)) As IEnumerable(Of XElement)

Параметры типа

T

Тип объектов в source, ограниченный узлом XContainer.The type of the objects in source, constrained to XContainer.

Параметры

source
IEnumerable<T> IEnumerable<T> IEnumerable<T> IEnumerable<T>

Интерфейс IEnumerable<T> узла XContainer, содержащий исходную коллекцию.An IEnumerable<T> of XContainer that contains the source collection.

Возвраты

IEnumerable<T> для XElement, содержащий подчиненные элементы каждого элемента и документа в исходной коллекции.An IEnumerable<T> of XElement that contains the descendant elements of every element and document in the source collection.

Примеры

Следующий пример извлекает коллекцию элементов, а затем использует этот метод оси для получения всех элементов-потомков каждого элемента в коллекции элементов.The following example retrieves a collection of elements, and then uses this axis method to retrieve all descendent elements of every item in the collection of elements.

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

IEnumerable<XElement> elList =  
    from el in xmlTree.Elements("Para").Descendants()  
    select el;  

foreach (XElement el in elList)  
    Console.WriteLine(el);  
Dim xmlTree As XElement = _  
    <Root>  
        <Para>  
            <t>This is some text </t>  
            <b>  
                <t>where</t>  
            </b>  
            <t> all of the nodes must be concatenated. </t>  
        </Para>  

        <Para>  
            <t>This is a second sentence.</t>  
        </Para>  
    </Root>  

Dim elList = From el In xmlTree.<Para>.Descendants _  
                        Select el  

For Each el As XElement In elList  
    Console.WriteLine(el)  
Next  

В этом примере получается следующий результат:This example produces the following output:

<t>This is some text </t>  
<b>  
  <t>where</t>  
</b>  
<t>where</t>  
<t> all of the nodes must be concatenated. </t>  
<t>This is a second sentence.</t>  

Ниже приведен тот же пример, но в этом случае XML находится в пространстве имен.The following is the same example, but in this case the XML is in a namespace. Дополнительные сведения см. в разделе работа с пространствами имен XML.For more information, see Working with XML Namespaces.

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 nodes must be concatenated. </t>  
    </Para>  
    <Para>  
        <t>This is a second sentence.</t>  
    </Para>  
</Root>");  

IEnumerable<XElement> elList =  
    from el in xmlTree.Elements(aw + "Para").Descendants()  
    select el;  

foreach (XElement el in elList)  
    Console.WriteLine(el);  
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 nodes must be concatenated. </t>  
                </Para>  

                <Para>  
                    <t>This is a second sentence.</t>  
                </Para>  
            </Root>  

        Dim elList = From el In xmlTree.<Para>.Descendants _  
                                Select el  

        For Each el As XElement In elList  
            Console.WriteLine(el)  
        Next  
    End Sub  
End Module  

В этом примере получается следующий результат:This example produces the following output:

<t xmlns="http://www.adventure-works.com">This is some text </t>  
<b xmlns="http://www.adventure-works.com">  
  <t>where</t>  
</b>  
<t xmlns="http://www.adventure-works.com">where</t>  
<t xmlns="http://www.adventure-works.com"> all of the nodes must be concatenated. </t>  
<t xmlns="http://www.adventure-works.com">This is a second sentence.</t>  

Комментарии

Пользователи Visual Basic могут использовать интегрированный дочерней оси XML для получения элементов-потомков коллекции.Visual Basic users can use the integrated XML descendant axis to retrieve the descendant elements of a collection. Тем не менее встроенная ось получает только потомки с указанным именем.However, the integrated axis only retrieves descendants with a specified name. Если нужны пользователям Visual Basic для получения всех потомков, следует использовать этот метод оси явным образом.If Visual Basic users want to retrieve all descendants, then they must use this axis method explicitly.

Этот метод использует отложенное выполнение.This method uses deferred execution.

Дополнительно

Применяется к