Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

Extensions.AncestorsAndSelf Method (IEnumerable<XElement>)

Returns a collection of elements that contains every element in the source collection, and the ancestors of every element in the source collection.

Namespace:  System.Xml.Linq
Assembly:  System.Xml.Linq (in System.Xml.Linq.dll)
public static IEnumerable<XElement> AncestorsAndSelf(
	this IEnumerable<XElement> source
)

Parameters

source
Type: System.Collections.Generic.IEnumerable<XElement>
An IEnumerable<T> of XElement that contains the source collection.

Return Value

Type: System.Collections.Generic.IEnumerable<XElement>
An IEnumerable<T> of XElement that contains every element in the source collection, and the ancestors of every element in the source collection.

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type IEnumerable<XElement>. When you use instance method syntax to call this method, omit the first parameter.
ExceptionCondition
ArgumentNullException

source is null.

If multiple nodes in the source collection have the same ancestor, the ancestor will be included multiple times in the result collection. To avoid this, use the Distinct method.

This method uses deferred execution.

The following example retrieves a collection of the great grandchildren elements. It then uses this axis method to retrieve all ancestors and self of all elements in the collection.


StringBuilder output = new StringBuilder();
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;

output.Append("Great Grand Children Elements" + Environment.NewLine);
output.Append("----" + Environment.NewLine);
foreach (XElement de in greatGrandChildren)
    output.Append(de.Name + Environment.NewLine);

IEnumerable<XElement> allAncestors =
    from el in greatGrandChildren.AncestorsAndSelf().Distinct()
    select el;

output.Append("" + Environment.NewLine);
output.Append("Ancestors and Self" + Environment.NewLine);
output.Append("----" + Environment.NewLine);
foreach (XElement de in allAncestors)
    output.Append(de.Name + Environment.NewLine);

OutputTextBlock.Text = output.ToString();


Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft. All rights reserved.