The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

Extensions.Remove<T> Method (IEnumerable<T>)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

Removes every node in the source collection from its parent node.

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

public static void Remove<T>(
	this IEnumerable<T> source
where T : XNode


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

An IEnumerable<T> of XNode that contains the source collection.

Type Parameters


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

This method uses snapshot semantics—that is, it copies the attributes in the source collection to a List<T> before disconnecting them from their parents. This is required to avoid issues with mixed imperative/declarative code. For more information, see Mixed Declarative Code-Imperative Code Bugs (LINQ to XML).

The following example retrieves a collection of elements. It then calls this method to remove the elements from their parent element.

                XElement root = new XElement("Root",
    new XElement("Data", 1),
    new XElement("Data", 2),
    new XElement("Data", 3),
    new XElement("Data", 4),
    new XElement("Data", 5)

IEnumerable<XElement> elList =
    from el in root.Elements()
    where (int)el >= 3
    select el;



This example produces the following output:


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