Without Calling the Ancestors Operator

image_pdfimage_print
   
 

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Linq;
public class MainClass {
    public static void Main() {
        XDocument xDocument = new XDocument(
         new XElement("Books",
           new XElement("Book",
            new XAttribute("type", "Author"),
            new XElement("FirstName", "J"),
           new XElement("LastName", "R")),
           new XElement("Book",
            new XAttribute("type", "Author"),
           new XElement("FirstName", "E"),
           new XElement("LastName", "B"))));

        IEnumerable<XElement> elements =
         xDocument.Element("Books").Descendants("FirstName");

        foreach (XElement element in elements) {
            Console.WriteLine("Source element: {0} : value = {1}",element.Name, element.Value);
        }

        foreach (XElement element in elements) {
            foreach (XElement e in element.Ancestors())
                Console.WriteLine("Ancestor element: {0}", e.Name);
        }
    }
}

    


A More Concise Example of Calling the First Ancestors Prototype

image_pdfimage_print
   
 

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Linq;
public class MainClass {
    public static void Main() {
        XDocument xDocument = new XDocument(new XElement("Books",
  new XElement("Book",
    new XAttribute("type", "Author"),
    new XElement("FirstName", "J"),
   new XElement("LastName", "R")),
  new XElement("Book",
   new XAttribute("type", "Author"),
   new XElement("FirstName", "E"),
   new XElement("LastName", "B"))));

        foreach (XElement element in
         xDocument.Element("Books").Descendants("FirstName").Ancestors()) {
            Console.WriteLine("Ancestor element: {0}", element.Name);
        }
    }
}

    


Adding a Node to the Beginning of the Specified Node's Child Nodes with AddFirst

image_pdfimage_print
   
 
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Linq;
public class MainClass {
    public static void Main() {
        XDocument xDocument = new XDocument(
          new XElement("Books",
            new XElement("Book",
              new XAttribute("type", "Author"),
              new XElement("FirstName", "J"),
              new XElement("LastName", "R"))));

        xDocument.Element("Books").AddFirst(
          new XElement("Book",
            new XAttribute("type", "Author"),
            new XElement("FirstName", "E"),
            new XElement("LastName", "B")));
        Console.WriteLine(xDocument);
    }
}

    


Use AddFirst to add an element to xml document

image_pdfimage_print
   
 

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;
using System.Reflection;
using System.Xml.Linq;

class Program {
    static void Main(string[] args) {
        XElement xml = XElement.Load("Employee.xml");
        xml.AddFirst(new XElement("person",
                        new XElement("id", 5),
                        new XElement("firstname", "Tom"),
                        new XElement("lastname", "Cruise"),
                        new XElement("idrole", 1)));
        Console.WriteLine(xml);
    }
}

    


Adding a Node in a Specific Location of the Specified Node's Child Nodes with AddAfterSelf

image_pdfimage_print
   
 
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Linq;
public class MainClass {
    public static void Main() {
        XDocument xDocument = new XDocument(
          new XElement("Books",
            new XElement("Book",
              new XAttribute("type", "Author"),
              new XElement("FirstName", "J"),
              new XElement("LastName", "R"))));

        xDocument.Element("Books").Add(
          new XElement("Book",
            new XAttribute("type", "Author"),
            new XElement("FirstName", "E"),
            new XElement("LastName", "B")));

        xDocument.Element("Books").
          Element("Book").AddAfterSelf(
            new XElement("Book",
              new XAttribute("type", "Reviewer"),
              new XElement("FirstName", "F"),
              new XElement("LastName", "F")));

        Console.WriteLine(xDocument);
    }
}

    


Adding a Node in the Specified Node's Child Nodes with AddBeforeSelf

image_pdfimage_print
   
 
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Linq;
public class MainClass {
    public static void Main() {
        XDocument xDocument = new XDocument(
          new XElement("Books",
            new XElement("Book",
              new XAttribute("type", "Author"),
              new XElement("FirstName", "A"),
              new XElement("LastName", "B"))));
        xDocument.Element("Books").Add(
          new XElement("Book",
            new XAttribute("type", "Author"),
            new XElement("FirstName", "E"),
            new XElement("LastName", "B")));

        xDocument.Element("Books").
          Elements("Book").
          Where(e => ((string)e.Element("FirstName")) == "E").
          Single<XElement>().AddBeforeSelf(
            new XElement("Book",
              new XAttribute("type", "Reviewer"),
              new XElement("FirstName", "F"),
              new XElement("LastName", "F")));
        Console.WriteLine(xDocument);
    }
}

    


Filter string by its length

image_pdfimage_print
   
 

using System;
using System.Collections.Generic;
using System.Linq;

class LinqDemo {
    static void Main() {
        string[] names = { "Tom", "Dick", "Harry" };


        IEnumerable<string> filteredNames = names.Where(n => n.Length >= 4);
        foreach (string name in filteredNames) Console.Write(name + "|");
    }
}